【发布时间】:2015-05-18 15:35:16
【问题描述】:
我在我的 Java 编程书中做练习,我遇到了这个:
假设x 为1。在对以下表达式求值后,x 是什么?
A)
(x >= 1) && (x++ > 1)
B)
(x > 1) && (x++ > 1)
我理解B),因为它首先测试(x > 1),这是错误的,所以它不测试(x++ > 1),因此不会增加x。
但是,在 A) 上,(x >= 1) 是真的,所以它也会去(x++ > 1) 进行测试,但 (x++ > 1) 是假的。这是否意味着即使它为假,变量x = 1 仍在递增,因为表达式(x++ > 1) 已执行?
【问题讨论】:
-
你为什么不在每个后面加上
System.out.println(x)(虽然不是then子句的一部分,但它总是会发生)自己看看? :) 似乎很容易调查。接下来尝试使用&并查找短路评估。 -
你说得对,我确实把 system.out.println(x) 放在我为它做的 if else 语句之后,我没有意识到我可以在那里解决我自己的问题,我只是想弄清楚为什么当布尔表达式为假时它仍然会增加它。
标签: java