3つの等しい変数の同等性を確立しようとしていますが、次のコードは、出力する必要がある明らかな正解を出力していません。if(condition)
誰かが、コンパイラが与えられたものを内部でどのように解析しているのか説明できますか?
#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;
}
出力:
manav@workstation:~$ gcc -Wall -pedantic calc.c
calc.c: In function ‘main’:
calc.c:5: warning: suggest parentheses around comparison in operand of ‘==’
manav@workstation:~$ ./a.out
NOT Equal
manav@workstation:~$
編集:
以下の答えを見て、次のステートメントは上記の同等性をチェックしても大丈夫ですか?
if ( (i==j) == (j==k))