Comment écrire “si x est égal à 5 ou 4 ou 78 ou...” en C

J'ai une petite question sur l'utilisation d'opérateurs logiques dans une instruction if.

Actuellement, j'ai une instruction if qui vérifie si x est égal à 5 ou 4 ou 78:

if ((x == 5) || (x == 4) || (x == 78)) {
blah
}

Et je me demandais si je pouvais juste condenser tout ça pour:

if (x == 5 || 4 || 78) {
blah
}

Désolé pour ces une question de base, j'ai juste commencé à apprendre le C.

non, vous ne peut pas le faire. Vous devez vérifier un état contre un autre état et de les connecter avec ou || opérateurs. Aussi votre = doit être ==.
COBOL est un raccourci comme ça. Mais je ne pense pas que vous voulez y aller.
Haha, ouais je ne suis certainement pas. Notre maître de conférences seulement nous permet d'utiliser la condition simple choses, puisque tout le monde est au début de C. Aucune raison pour que ce type de raccourci n'est pas autorisé en C?
Vous ne pouvez pas utiliser ce raccourci, car il est parfaitement valide le code C, comme vous l'avez écrit (en ignorant l' 'blah' partie). Il n'a tout simplement pas faire ce que vous pensez qu'il devrait.
Probablement parce qu'il aurait fait de l'écriture de la première compilateurs C beaucoup plus compliqué. Et l'opérateur priorités aurait été beaucoup plus difficile de le faire correctement pour faire ce genre de déclaration de travaux. En vertu de C les règles de priorité x == 4 || 5 s'analyse comme (x == 4) || 5, tandis que le raccourci que vous suggérer l'obligeant à analyser x == (4 || 5), ce qui nécessiterait d'autres, sans doute plus les opérations les plus courantes (comme x == 0 || y == 0) à utiliser plus de parenthèses.

OriginalL'auteur stockoverflow | 2011-03-16