有人可以解释为什么这个程序的输出是假的?
x && y给出1.仍然输出为false.
#include <stdio.h>
int main()
{
int x = 1, y = 2;
if(x && y == 1)
{
printf("true.");
}
else
{
printf("false.");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为==优先级高于&&So,所以首先对此进行评估:
x && (y == 1)
Run Code Online (Sandbox Code Playgroud)
y == 1 // 2 == 1
//Result: false
Run Code Online (Sandbox Code Playgroud)
哪个是假的,然后是第二个:
x && false //1 && false
//Result: false
Run Code Online (Sandbox Code Playgroud)
所以if语句将是false
有关运算符优先级的更多信息,请参见此处:http://en.cppreference.com/w/cpp/language/operator_precedence