小编m0s*_*afa的帖子

括号和逻辑运算符

考虑这段代码(C++):

int x = -4 , y = 5 ;
bool result = x > 0 && y++ < 10 ;
Run Code Online (Sandbox Code Playgroud)

表达式(X> 0)将被首先计算,并且因为(X> 0 =假),并且由于短路评价,其他表达(Y ++ <10)将不会被评价和y的值将保持5 .

现在考虑以下代码:

int x = -4 , y = 5 ;
bool result = (x > 0) && (y++ < 10) ;
Run Code Online (Sandbox Code Playgroud)

可以预期,在括号中的表达式将被首先计算,使得逻辑AND被执行时,表达之前(Y ++ <10)将已被评估和y的值已成为6,但现实情况是,y的值仍然是5.这意味着即使使用括号,评估也会被短路,并且忽略表达式(y ++ <10).

这个案子有什么解释?

c++ java short-circuiting logical-operators

4
推荐指数
1
解决办法
2932
查看次数

标签 统计

c++ ×1

java ×1

logical-operators ×1

short-circuiting ×1