Dans H&S5, j'ai rencontré le plus "bizarre" de l'instruction switch (8.7.1, p. 277) pas en utilisant des accolades.
Voici l'exemple:
switch (x)
default:
if (prime(x))
case 2: case 3: case 5: case 7:
process_prime(x);
else
case 4: case 6: case 8: case 9: case 10:
process_composite(x);
L'idée semble être d'éviter la surcharge de l' prime(x)
pour la plupart des petits nombres.
Quand j'ai vu ce document, j'ai été confus au sujet de la manque des accolades, mais la vérification de l'officiel de la grammaire (C1X la pré-norme, 6.8.4, p. 147), la syntaxe est correcte: Une instruction switch a juste une déclaration après le passage de l'expression et la parenthèse fermante.
Mais dans ma programmation, je n'ai jamais encore rencontré une telle curieux instruction switch (et je ne veux pas voir du tout dans le code que je dois prendre la responsabilité), mais j'ai commencé à me demander:
Tout de vous le savez, un interrupteur d'expression, l'une sans l'aide d'accolades, mais encore avoir un sens? Pas seulement switch (i);
(ce qui est légal, mais un NOP), mais à l'aide d'au moins deux cas où des étiquettes ayant une sorte de but utile?