lang:cpp:condition
Ceci est une ancienne révision du document !
if
- Condition classique :
if () { plusieurs instructions; } else if () une instruction; else une instruction;
Attention aux else
s'il y a des if
imbriqués :
if () if () une instruction; else // Ici, l'indentation est mauvaise car le else correspond au second if. une instruction;
switch
Cas courant
Les switch
/case
agissent comment des goto
. Il faut donc mettre un break pour éviter de passer à l'instruction suivante.
int i = 0; switch (i) { case 0: i = 2; // break; // Sans break, l'instruction i = 3 sera executée. case 1: i = 3; case 2: default: }
Sur un string
switch
ne fonctionne sur que les nombres. Pour utiliser un string, il faut passer par une fonction de hash (ici, djb2).
constexpr size_t djb2a(const char* s, uint32_t h = 5381) { return !*s ? h : djb2a(s + 1, 33 * h ^ (uint8_t)*s); } int main() { std::string texte = "texte"; switch (djb2a(texte.c_str())) { case djb2a("texte"): texte = "OK"; break; } }
<note important>Toute création d'un hash présente un risque de collision.</note>
fold
lang/cpp/condition.1578246182.txt.gz · Dernière modification : 2020/01/05 18:43 de root