Outils pour utilisateurs

Outils du site


lang:cpp:condition

Ceci est une ancienne révision du document !


Table des matières

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>

constexprhash github Archive du 24/08/2016 le 05/01/2020

fold

lang/cpp/condition.1578246182.txt.gz · Dernière modification : 2020/01/05 18:43 de root