【发布时间】:2013-01-19 00:40:00
【问题描述】:
几周前我设置了一个类似的question,但我仍然无法消除java operators precedence 上的歧义和困惑。这次我有这段代码:
int mask = 0;
int count = 0;
if( ((5<7) || (++count < 10)) | mask++ < 10 )
mask = mask + 1;
System.out.println(mask + " " + count);
结果是(出乎我意料):2 0。
此外,编译器提供了一个警告,仅在表达式 (++count
但我认为代码的执行可以通过以下方式之一:
1) |具有比 || 更高的优先级,因此它被认为是表达式 ( (++count
2) 如果编译器首先查看 (5
我误解了什么并且无法解释编译器的行为以及输出?
【问题讨论】:
-
||周围有额外的括号。因此,您声称|的优先级高于||是无关紧要的,因为您在表达式中添加了额外的括号。 -
括号优先级最高,高于
| -
好吧,你是对的。我怎么没注意到?...