【发布时间】:2015-06-19 08:59:10
【问题描述】:
#include<iostream>
using namespace std;
int main(){
int x = 1967513926;
int y = 1540383426;
cout<<x+y;
return 0;
}
以上两个整数之和为 3507897352
【问题讨论】:
-
cout << std::numeric_limits<int>::max() << '\n';你会发现3507897352在你的实现中明显大于上述结果。然后考虑有符号和无符号int之间的区别。 -
Int 是 32 位的,它是单字节的,所以它的范围是 -2147483648 到 2147483648。
-
您忘记了在这 32 位中需要 1 位来指示它是负数还是正数,因此您的最大带符号整数是 2^31(至少在大多数系统上)。
-
@czeski int 的大小不一定是 32 位。而 32 位 int 的范围是从 -2147483648 到 2147483647,not 到 2147483648
标签: c++