在 int 中存储大于 INT_MAX 的数字
Storing number larger than INT_MAX in an int
谁能给我解释一下这种 C++ 行为?
for (int i=0;i<3;++i){
int x;
std::cin >> x;
std::cout << x << std::endl;
}
如果我输入一个大于 INT_MAX 的数字(比如 124124124124124)只有一次,输出:
2147483647
2147483647
2147483647
我最好的猜测是它识别出我的输入是一个数字,但它会切片,因为 x
最多只能容纳 2147483647
。我不明白的是为什么只输入一次那个大数字后,输入"overflows"到其他输入,并打印3次2147483647
,然后结束程序。
流提取运算符 >>
注意到您不能流式传输那么大的数字并设置 fail
位,并且 不修改 x
.
的值
从该输入流(在本例中为 cin
)的后续读取立即失败,因此 x
的值保持不变(在本例中为未定义)。
谁能给我解释一下这种 C++ 行为?
for (int i=0;i<3;++i){
int x;
std::cin >> x;
std::cout << x << std::endl;
}
如果我输入一个大于 INT_MAX 的数字(比如 124124124124124)只有一次,输出:
2147483647
2147483647
2147483647
我最好的猜测是它识别出我的输入是一个数字,但它会切片,因为 x
最多只能容纳 2147483647
。我不明白的是为什么只输入一次那个大数字后,输入"overflows"到其他输入,并打印3次2147483647
,然后结束程序。
流提取运算符 >>
注意到您不能流式传输那么大的数字并设置 fail
位,并且 不修改 x
.
从该输入流(在本例中为 cin
)的后续读取立即失败,因此 x
的值保持不变(在本例中为未定义)。