【发布时间】:2019-02-17 14:42:28
【问题描述】:
我在使用 AND 和 OR 时感到困惑,尽管这是基本问题,但我很困惑。我知道在使用 AND 和 OR 逻辑运算符时存在短路方法。
Assume int a,x=0,y=0;
a). a= 10 && ++x && y++
Values a=0,x =1,y=1 [expected ]
b). a= 10 && ++x || y++
Values a=1 ,x=1,y=0 [short circuit
,expected ]
c). a= 10 || ++x || y++
Values a=1 , x=0, y=0 [short
circuit ]
我的问题是:
-
a = 10 && y++
Values a =0, x=0(default didn't change ), y=1 [ expected no short circuit y is incremented later and hence a =0 ] -
参考问题1。
a = 10 || ++x && y++
实际值:
a=1, x=0,y=0
我的预期:
a = 0, x=0, y=1
解释:10 || ++x(短路)
所以我保持 a = (1 && y++) => a=0 (没有短路,并且 y 有后增量)因此 a =0,y=1。
如何理解我的问题 2;我想我错过了什么。
【问题讨论】:
标签: c logical-operators operator-precedence