J'essaie d'établir l'égalité de trois variables égales, mais le code suivant n'imprime pas la bonne réponse évidente qu'il devrait imprimer. Est-ce que quelqu'un peut expliquer, comment le compilateur analyse le donné if(condition)
en interne?Deux opérateurs d'égalité '==' dans la même condition 'si' ne fonctionnent pas comme prévu
#include<stdio.h>
int main()
{
int i = 123, j = 123, k = 123;
if (i == j == k)
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
Sortie:
[email protected]:~$ gcc -Wall -pedantic calc.c
calc.c: In function ‘main’:
calc.c:5: warning: suggest parentheses around comparison in operand of ‘==’
[email protected]:~$ ./a.out
NOT Equal
[email protected]:~$
EDIT:
Aller par les réponses ci-dessous, est la déclaration suivante d'accord pour vérifier l'égalité ci-dessus?
if ((i==j) == (j==k))
Vous devez ((i == j) && (j == k)) –
Vos tests modifier si je == j' 'a la même valeur que j' == K' . Que se passe-t-il pour 'i = 1',' j = 2', 'k = 3'? Ne devinez pas, essayez de comprendre: par exemple, quelle est la valeur de '1 == 2'? –
[Prise en charge du langage pour les opérateurs de comparaison chaînés (x