Outils pour utilisateurs

Outils du site


lang:c:condition

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:c:condition [2020/02/17 06:37] – Ajout d'un break. rootlang:c:condition [2020/02/17 10:02] (Version actuelle) – Pas de main() root
Ligne 1: Ligne 1:
 ====if==== ====if====
 ===Condition classique=== ===Condition classique===
-<code cpp>+<code c>
 if () if ()
 { {
Ligne 14: Ligne 14:
 Attention aux ''else'' s'il y a des ''if'' imbriqués : Attention aux ''else'' s'il y a des ''if'' imbriqués :
  
-<code cpp>+<code c>
 if () if ()
   if ()   if ()
Ligne 25: Ligne 25:
 ===Cas courant=== ===Cas courant===
 Les ''switch''/''case'' agissent comment des ''goto''. Il faut donc mettre un break pour éviter de passer à l'instruction suivante. Les ''switch''/''case'' agissent comment des ''goto''. Il faut donc mettre un break pour éviter de passer à l'instruction suivante.
-<code cpp>+<code c>
 int i = 0; int i = 0;
 switch (i) switch (i)
Ligne 31: Ligne 31:
   case 0:   case 0:
     i = 2;     i = 2;
-    // Sans break, l'instruction i = 3 sera executée.+    // Sans break, l'instruction i = 3 sera exécutée.
     // break;     // break;
   case 1:   case 1:
Ligne 43: Ligne 43:
 </code> </code>
  
-===Sur un string=== +Les variables déclarées dans un ''case'' sont accessibles depuis les ''case'' suivants.
-''switch'' ne fonctionne sur que les nombres. Pour utiliser un string, il faut passer par une fonction de hash (ici, djb2).+
  
-<code cpp+<code c
-constexpr unsigned long djb2(char const *str)+int k = 1; 
 +switch (k)
 { {
-    unsigned long hash 5381; +  case 0: 
-    int = 0; +    // Impossible car si k =1, l'instruction i = 0 n'est pas exécutée. 
- +    // int = 0; 
-    while ((c = *str++)) +    int i; // Possible car pas d'initialisation. 
-        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ +    break
- +  case 1:
-    return hash; +
-+
- +
-int main() +
-{ +
-  std::string texte = "texte"; +
-  switch (djb2(texte.c_str()))+
   {   {
-    case djb2("texte"): +    int j 3
-      texte "OK"+    break;
-      break;+
   }   }
 +  case 2:
 +  default:
 +    i = 123;
 +    // j = 15; // Impossible car en dehors du bloc de déclaration de j.
 +    break;
 } }
 </code> </code>
  
-<note important>Toute création d'un hash présente un risque de collision.</note> 
lang/c/condition.1581917858.txt.gz · Dernière modification : 2020/02/17 06:37 de root