相关疑难解决方法(0)

处于相同"if"条件的两个"=="相等运算符未按预期工作

我试图建立三个相等变量的相等,但下面的代码不打印应该打印的明显正确的答案.有人可以解释,编译器如何解析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;
}
Run Code Online (Sandbox Code Playgroud)

输出:

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:~$
Run Code Online (Sandbox Code Playgroud)

编辑:

通过下面给出的答案,以下声明可以检查上面的相等吗?

if ( (i==j) == (j==k))
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction operators equals-operator

11
推荐指数
4
解决办法
3513
查看次数