解释我的输出

Explain my output

我的输出应该是 5 30 但是,输出是 5 25 我想知道为什么它给出 5 25

public static void main(String[] args)
{
   int i = 1, j = 5;

   do
   {
       System.out.println( i = i++ * j);
   } 
   while (i <= 10);

   System.out.println();
}

第一次迭代:

i == 1 : i=i++ * j
            1  * 5 = 5

第二次迭代:

i == 5 : i=i++ * j
            5  * 5 = 25

请注意,post 递增运算符 returns 变量的原始值(在递增之前)。

我觉得很奇怪,您在第一次迭代中期望正确的输出 (5),但在第二次迭代中没有遵循相同的逻辑来获得正确的输出 (25)。

看到您的评论,您应该注意到表达式 i=i++ * j 的计算顺序如下:

  1. i++ 被评估,返回 i 的原始值(第一次迭代中的 1 )并将 i 递增到 2.

  2. 计算乘法 - 1 * 5,等于 5.

  3. i(赋值前的值为 2)被赋值为 5.

首先运行: 我 = 1 * 5 打印:5 i 的值:5

第二个运行: 我 = 5 * 5 打印:25

操作: i = i++ * j - 这里忽略了 i++ post-由于分配回同一个变量,即增量。 i.
它实际上与 i = i * j

相同

所以,它给出了输出 5, 25

i = ++i * j 将给出输出 10, 55.