解释我的输出

问题描述 投票:0回答:3

我的输出应该是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();
}
java c# operator-keyword
3个回答
10
投票

第一次迭代:

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

第二次迭代:

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

请注意,后增量运算符返回变量的原始值(在增量之前)。

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

看到你的评论,你应该注意表达式i=i++ * j按以下顺序评估:

  1. 评估i++,返回i的原始值(第一次迭代中的1)并将i递增到2
  2. 乘法被评估 - 1 * 5,等于5
  3. i(在任务之前的值是2)被指定为5

0
投票

首次运行:i = 1 * 5打印:5值i:5

第二轮:i = 5 * 5打印:25


0
投票

操作:i = i++ * j - 由于分配回同一个变量i,e,忽略i++后增量。 i。 它实际上与i = i * j相同

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

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

© www.soinside.com 2019 - 2024. All rights reserved.