我目前正在阅读 Barry Burd 的 Java For Dummies,并想到了这个小练习。
练习是关于后增量和前增量的。在问题中(请参阅代码)我能够找出所有行的答案(没有编译器的帮助)除了最后一行。根据我目前对后/前增量的了解,这没有意义。
请告知结果如何或为何与我的预期不符。
我尝试初始化并声明一个值为“20”的新变量 (int),然后执行“i = i++ + i++”,但仍然收到相同的结果 (41)。
也尝试了两次 out.println(i),但它仍然打印出 41。
import static java.lang.System.out;
public class Main
{
public static void main(String[] args) {
int i = 10;
out.println(i++); //10(post11)
out.println(--i); //10(pre11-1)
--i; //9(pre10-1)
i--; //9(post8)
out.println(i); //8
out.println(++i); //9(pre8+1)
out.println(i--); //9(post8)
out.println(i); //8
i++; //8(post9)
i = i++ + ++i; //i = 9(post10) + 10(pre9+1) = 19(post20)
out.println(i); //20
i = i++ + i++; //i = 20(post21) + 20(post21) = 40(post42)
out.println(i); //41 (result copied from compiler)
}
}
我希望最后一行打印 42 而不是 41,因为“20”被添加了两次,并且也增加了两次。
最佳答案
i = i++ + i++
计算结果为(如果 i 为 20):
i = 20 + 21
因为第一个 i++
是一个后置运算符,所以不影响它。但是,它确实会影响 i
的下一次使用。
我将逐步分解:
i =
i++
+ i++;
, i == 20
i =
20
+ i++
, i == 21
i = 20 +
i++
, i == 21
i = 20 +
21
, i == 22
i =
41
关于java - 一个变量可以在一条语句中递增多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57501821/