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