我的输出应该是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
请注意,后增量运算符返回变量的原始值(在增量之前)。
我觉得很奇怪你在第一次迭代中期望正确的输出(5),但是在第二次迭代中没有遵循相同的逻辑来获得正确的输出(25)。
看到你的评论,你应该注意表达式i=i++ * j
按以下顺序评估:
i++
,返回i
的原始值(第一次迭代中的1
)并将i
递增到2
。1 * 5
,等于5
。i
(在任务之前的值是2
)被指定为5
。首次运行:i = 1 * 5打印:5值i:5
第二轮:i = 5 * 5打印:25
操作:i = i++ * j
- 由于分配回同一个变量i,e,忽略i++
后增量。 i
。
它实际上与i = i * j
相同
所以,它给出了输出5, 25
而i = ++i * j
将给出输出10, 55
。