评估逻辑操作数

时间:2014-06-10 10:29:17

标签: c

如果我有以下内容:

int a = -10 && 0;

然后C评估-101,因为-100不同,然后制作 结果1 && 00之间的比较结果如何? 或者是否允许-10并以书面形式进行比较?

相反,如果我写:

int c = 10;
int b = 11;

int res = c > 10 && b == 11;

然后C做出这个:

c > 10为false,因此评估为0 b == 11为真,因此评估为1

然后表达式为:

结果为0 && 1

0

2 个答案:

答案 0 :(得分:3)

运营商&&||短路行为 1 。在

int a = -10 && 0;  

因为左操作数是-10,它是非零的,因此是true,因此检查右操作数,即0。在

int res = c > 10 && b == 11;  

因为左操作数被评估为false,所以不评估右操作数。


1 C11 6.5.13(p4):如果第一个操作数比较等于0,则不评估第二个操作数。 功能

答案 1 :(得分:1)

对于

int a = -10&&0;

-10被视为更高逻辑(1)。但是,结果仍为0。