C++ 中对 int 类型的大负数取相反数时会溢出
错误代码:
// C++ #includeusing namespace std; int main() { int a = -2147483648; a = -a; cout << a << endl; // 结果为:-2147483648 int b = -a; cout << b << endl; // 结果为:-2147483648 system("pause"); return 0; }
C++ 中 int 类型占 4 个字节,最大取值范围为 -2147483648 ~ 2147483647,所以说,如果直接对 -2147483648 取相反数,就会导致溢出报错,可以采用以下的代码来解决:
// C++ #includeusing namespace std; int main() { int a = -2147483648; unsigned int b = -a; cout << b << endl; // 结果为:2147483648 // 不能使用语句:unsigned int a = -a,否则就会报错:"a":重定义;不同的基类型 system("pause"); return 0; }



