我正在学习 Java 中的有符号类型与无符号类型,并遇到了一个让我困惑的棘手示例问题:
Is the following code an infinite loop? Why or why not?
for(long x = 0; x != -1; x++) {
System.out.println("Hello world!)";
}
乍一看,它显然似乎是无限的,但由于长期以来都是 signed 类型,我认为它会溢出并最终达到 -1 的想法是否正确?然后循环就会结束?
问题是我无法真正测试它,因为它太大了。
看起来您的测试是用 Java 编写的。 如果是,那么这里有很好的讨论: Java 如何处理整数下溢和溢出以及如何检查它?