order of evaluation of subexpressions in a Java expression

后端 未结 1 827
野趣味
野趣味 2020-12-21 10:10

I have the following snippet of code:

int x=2,y=3;
if ( (y == x++) | (x < ++y) )
// rest of code

I know that in C++ you\'re taught not t

相关标签:
1条回答
  • 2020-12-21 10:30

    Yes, it's guaranteed to be executed from left to right - or at least, act as if it is. This is defined in JLS 15.7:

    The Java programming language guarantees that the operands of operators appear to be evaluated in a specific evaluation order, namely, from left to right.

    The first operand of the | operator will evaluate 3 == 2, and yield false, but the second operand will evaluate 3 < 4, and yield true.

    Having said that, I would definitely avoid code that requires that much careful reading...

    0 讨论(0)
提交回复
热议问题