在对具有最大可能值的整数执行++运算时会发生什么?

时间:2013-06-03 13:11:09

标签: integer integer-overflow

所以,这是一个经典但我无法在任何地方找到决定性答案 假设我有一个整数'x'。我正在循环中执行“++”操作。 像这样:

int x=0;
while(true){
    x++;
    print(x);
} 

我认为输出会从某个最大值旋转到某个最小值,但这些值是什么? 它还取决于使用的编程语言吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这在很大程度上取决于语言,以及关于接下来发生的事情如何实现该语言。

max和min值还取决于数据类型(在本例中为int)是有符号还是无符号(即它可以是负数?),以及使用多少位来实现它(16-位整数不会保持与64位整数一样大的数字)。您的语言可能会也可能不会指定到int的位数。

如果您正在使用C,则可以#include <limits.h>访问INT_MAX宏,这将告诉您在编译器下int可以容纳的最大数字。 INT_MIN相应地为您提供最小的值。

答案 2 :(得分:0)

是的,在java中例如integer.MAX_VALUE + 1最终为integer.MIN_VALUE,也是integer.MIN_VALUE - 1 = integer.MAX_VALUE。我不确定所有语言是如何处理的,但是有一个例子可供你使用。