我如何评估?=(20 || 10)?
#include int main(void) { int i=10; if(i==(20||10)) printf("True"); else printf("False"); return 0; }
这给出了输出False 。
请解释一下这个程序是如何工作的?
这行if(i==(20||10))
总是求值为i==1
因为Alk
在评论中说 – (20||10)
求值为1
,因此当你比较i == 1
,这就是为什么你得到False
作为输出。 C
的非零值意味着为真。
阅读有关短路评估的内容
也许这就是你想要的:
int i=10; if(i==20 || i == 10) printf("True"); else printf("False");
看看if(i==(20||10))
。 由于内括号,首先评估20||10
,得到1
。 然后,将值为10
变量i
与1
进行比较,得到0
。
在C中, 0
表示False
,而所有非零值表示True
。 所以情况变得False
。 因此,打印“假”。