我正在尝试建立三个相等变量的相等性,但以下代码没有打印它应该打印的明显正确答案。有人可以解释一下,编译器是如何在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))