【发布时间】:2014-03-12 08:43:26
【问题描述】:
只是为了好玩,我试图替换:
if (set1.add(x) == false)
{
set2.add(x);
}
与:
set1.add(x) || set2.add(x);
但是,Eclipse 抱怨:
Syntax error on token "||", invalid AssignmentOperator
The left-hand side of an assignment must be a variable
谁能对这些错误消息有所了解?它们对我没有多大意义。
【问题讨论】:
-
正如它所说的;它需要类似于:
boolean temp = set1.add(x) || set2.add(x);. -
set1.add(x) ? false : set2.add(x)怎么样? (还没有尝试过,Java 规则有时很模糊,所以我并不是说它会更好。) -
+1 用于发现这种奇怪现象。顺便说一句,
bool foo(){return true;} bool bar(){return true;} int main(){ foo() || bar(); return 0;}是有效的 C 和 C++。所以肯定是 JLS 语法有什么奇怪的地方或者是编译错误。 -
@vefthym 问题标题使 OP 的意图非常清楚恕我直言。
-
@Bathsheba 这是 C/C++ 语法和 Java 之间的区别。 JLS 明确指出;在 Java 中,并不是每个表达式都可以用作语句。我在my answer 中包含了引用。
标签: java grammar boolean-logic short-circuiting