考虑这段代码(C++):
int x = -4 , y = 5 ;
bool result = x > 0 && y++ < 10 ;
表达式 (x > 0) 将首先被评估,因为 (x > 0 = false) 和由于短路评估,另一个表达式 (y++ < 10) 不会被评估并且 y 的值将保持 5 .
现在考虑以下代码:
int x = -4 , y = 5 ;
bool result = (x > 0) && (y++ < 10) ;
预计括号中的表达式将首先被评估,以便在执行逻辑与之前,表达式 (y++ < 10) 将被评估并且 y 的值已变为 6 ,但实际情况是 y 的值仍然是 5 。这意味着即使有括号,评估也会被短路并且表达式 (y++ < 10) 被忽略。
这个案子的解释是什么?!