【发布时间】:2020-05-22 00:39:45
【问题描述】:
#include <stdio.h>
int main()
{
if(2&&3>1)
printf("its greater");
return 0;
}
这段代码如何显示 2&&3>1 为真?
【问题讨论】:
-
2 为真,3>1 为真,真和(&&)真为真
-
因为操作顺序。
&&最后评估。3>1是true,2也是布尔值true,因为任何不同于0的数字都是。 -
好吧,不是
true,因为我们在这里说的是C,但你明白了。 -
好吧,我明白了,我错过了大括号 (2&&3)>1,无论如何,谢谢。
-
@Havenard — 并不是真正的“
&&最后评估”。评估条件的 LHS(评估后有一个序列点)。如果 LHS 为假,则不评估 RHS;只有当 LHS 为真时,才会评估 RHS——如果 RHS 为真,则整体表达式为真,否则整体表达式为假。在数值上,如果结果为假,则产生 0,如果结果为真,则产生 1。
标签: c logical-operators