您能逐步解释java如何评估
1)y?
的值int x = 5; int y = x-- % x++;
2)在这种情况下y的值?
int x = 5; int y = x-- * 3 / --x;
答案 0 :(得分:2)
好吧,操作数从左到右进行评估,并且在每种情况下, postfix 操作的结果是增量/减量前的变量值,而的结果前缀操作是增量/减量后变量的值...所以你的案例看起来像这样:
案例1:
int x = 5;
int tmp1 = x--; // tmp1=5, x=4
int tmp2 = x++; // tmp2=4, x=5
int y = tmp1 % tmp2; // y=1
案例2:
int x = 5;
int tmp1 = x--; // tmp1=5, x=4
int tmp2 = 3;
int tmp3 = --x; // tmp3=3, x=3
int y = tmp1 * tmp2 / tmp3; // y = 5
就我个人而言,我通常会尽量避免在较大的表达式中使用前/后增量表达式,而我肯定会避免这样的代码。我发现将副作用表达式放在单独的语句中几乎总是更清楚。
答案 1 :(得分:0)
我不确定java,但在C中它演变成未定义的行为。