lang:cpp:condition
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
lang:cpp:condition [2020/02/19 22:08] – code cpp root | lang:cpp:condition [2020/06/16 15:15] (Version actuelle) – Fix typo root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====if==== | ====if==== | ||
+ | |||
+ | Les '' | ||
+ | |||
===Conditions multiples sur une même valeur : fold (opérateur ...)=== | ===Conditions multiples sur une même valeur : fold (opérateur ...)=== | ||
Avec les templates variadiques : | Avec les templates variadiques : | ||
Ligne 22: | Ligne 25: | ||
====switch/ | ====switch/ | ||
+ | |||
+ | Les '' | ||
===Déclaration d'une variable dans un switch=== | ===Déclaration d'une variable dans un switch=== | ||
- | Une variable définie dans un '' | + | Une variable définie dans un '' |
Il est donc conseillé de mettre des '' | Il est donc conseillé de mettre des '' | ||
Ligne 47: | Ligne 52: | ||
{ | { | ||
case 0: | case 0: | ||
+ | // Valide car la classe A a un constructeur default. | ||
A a; | A a; | ||
// Non car si i vaut 1, le constructeur b ne sera pas appelé. | // Non car si i vaut 1, le constructeur b ne sera pas appelé. | ||
Ligne 92: | Ligne 98: | ||
</ | </ | ||
- | <note important> | + | <WRAP center round important |
+ | Toute création d'un hash présente un risque de collision. | ||
+ | </WRAP> | ||
- | ====[[unlikely]] et [[likely]]==== | ||
- | Il est possible d' | ||
- | |||
- | <code cpp> | ||
- | int i = 1; | ||
- | if (i == 1) [[likely]] | ||
- | ... | ||
- | </ | ||
- | |||
- | <code cpp> | ||
- | int f(int i) | ||
- | { | ||
- | switch(i) | ||
- | { | ||
- | case 1: return 1; | ||
- | [[likely]] | ||
- | case 2: return 2; | ||
- | [[unlikely]] | ||
- | default: return 3; | ||
- | } | ||
- | return 2; | ||
- | } | ||
- | </ | ||
- | |||
- | Code généré sans les attributs '' | ||
- | |||
- | gcc est utilisé et les options d' | ||
- | |||
- | <code asm> | ||
- | f(int): | ||
- | mov eax, edi | ||
- | cmp edi, 1 | ||
- | je .L2 | ||
- | cmp edi, 2 | ||
- | mov edx, 3 | ||
- | cmovne | ||
- | .L2: | ||
- | ret | ||
- | </ | ||
- | |||
- | Code généré avec les attributs '' | ||
- | |||
- | <code asm> | ||
- | f(int): | ||
- | mov eax, edi | ||
- | cmp edi, 1 | ||
- | je .L2 | ||
- | cmp edi, 2 | ||
- | jne .L8 | ||
- | .L2: | ||
- | ret | ||
- | .L8: | ||
- | mov eax, 3 | ||
- | ret | ||
- | </ |
lang/cpp/condition.1582146527.txt.gz · Dernière modification : 2020/02/19 22:08 de root