pre和postincrement java评估

时间:2010-11-17 10:21:21

标签: java

您能逐步解释java如何评估

1)y?

的值
   int x = 5;
   int y = x-- % x++;

2)在这种情况下y的值?

   int x = 5;
   int y = x-- * 3 / --x;

2 个答案:

答案 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中它演变成未定义的行为。