我编写了这段代码,只是为了看看将负整数放入无符号整数数组中会发生什么。
#include <iostream>
int main()
{
using namespace std;
unsigned int array[4];
array[0]=4;
array[1]=4;
array[2]=2;
array[3]=-2;
cout << array[0] + array[1] + array[2] + array[3] << endl;
unsigned int b;
b=-2;
cout << b <<endl;
return 0;
}
我原本期望在这两种情况下都会发生整数溢出。然而,只有第二种情况实际上发生了。在第一种情况下,一切都表现得像是一个普通的整数数组,而不是无符号整数数组。那么到底是什么导致了这种异常行为呢?我的编译器是gcc 4.8,如果有任何重要性,请告知。谢谢你的帮助。编辑:以下是我的电脑上的输出结果。
8
4294967294
array[0]
等的实际值而不仅仅是它们的总和,那么这将变得更加清晰。 - starsplusplus