解释我的输出
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
的计算顺序如下:
i++
被评估,返回 i
的原始值(第一次迭代中的 1
)并将 i
递增到 2
.
计算乘法 - 1 * 5
,等于 5
.
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
.
我的输出应该是 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
的计算顺序如下:
i++
被评估,返回i
的原始值(第一次迭代中的1
)并将i
递增到2
.计算乘法 -
1 * 5
,等于5
.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
.