【发布时间】:2015-12-21 17:17:28
【问题描述】:
我有以下sn-p的代码:
int x=2,y=3;
if ( (y == x++) | (x < ++y) )
// rest of code
我知道在 C++ 中你被教导不要依赖子表达式的求值顺序,因为它根本不能保证是任何顺序。 所以这段代码会出错,并且条件中的表达式产生的布尔值不能保证为真(例如,在第一次相等测试中评估之前,y 可以递增)。 由于我在 Java 认证书中阅读了此代码,因此我认为 Java 不是这种情况。我的意思是,我是否保证 Java 中的评估顺序总是从左到右?所以上面的表达式应该总是为真。
【问题讨论】:
-
“我的意思是,我保证Java中的评估顺序总是从左到右”。是的。
-
谷歌搜索让我回到 stackoverflow 很有趣:D
-
别忘了
|不同于|| -
@jhamon 是的;我知道。它们也有不同的含义和不同的优先级! (| 具有更高的优先级,我明白了..)
标签: java c++ expression operator-precedence