Pri*_*amr 0 c# java operator-keyword
我的输出应该是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();
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 10
第一次迭代:
i == 1 : i=i++ * j
1 * 5 = 5
Run Code Online (Sandbox Code Playgroud)
第二次迭代:
i == 5 : i=i++ * j
5 * 5 = 25
Run Code Online (Sandbox Code Playgroud)
请注意,后增量运算符返回变量的原始值(在增量之前).
我觉得很奇怪你在第一次迭代中期望正确的输出(5),但是在第二次迭代中没有遵循相同的逻辑来获得正确的输出(25).
看到您的评论,您应该注意表达式i=i++ * j按以下顺序计算:
i++被评估,返回i(1在第一次迭代中)的原始值并递增i到2.
乘法被评估 - 1 * 5,等于5.
i(分配之前的值2)已分配5.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |