gpt4 book ai didi

Java:i++ 出现问题

转载 作者:行者123 更新时间:2023-12-01 06:49:49 24 4
gpt4 key购买 nike

我无法理解为什么部分代码甚至会运行:

private int m;
private int n;

public void f() {
m = (m +2) % n;
System.out.print(m+"\n");
}

public void g() {
int i=0;
m=0;
n=8;
while (i++<n) {
System.out.print("i=" + i + " m=");
f();
}
}

如果我运行 g() ,我打印出以下内容:

i++=1 m=2
i++=2 m=4
i++=3 m=6
i++=4 m=0
i++=5 m=2
i++=6 m=4
i++=7 m=6
i++=8 m=0

据我了解,最后一行不应出现。为什么 f()上次得到了吗?

何时 f()第一次被调用,i = 0那里有i++ = 1 。 (所以当我打印 i 时,它已经等于 1 )。

当我打电话f()时倒数第二次,i = 6 ,还有i++ = 7 。这是最后一个整数,即 < n (n = 8)。

为什么当 i++ 时该函数再次被调用已经是= 8 ?这真的让我很困惑。

最佳答案

使用++i而不是i++ .

  • i++ 制作一个副本,增加 i,然后返回副本,因此它将返回 i 的旧值(后增量)。

  • ++i 增加 i,并返回更新后的值 i(预增量)。

所以当你检查条件i++<n时它使用旧值进行检查,因此条件评估为 true。

关于Java:i++ 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39305260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com