在整数中存储大于 INT_MAX 的数字



有人可以向我解释这种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。我不明白的是,为什么在只输入一次大数字后,输入"溢出"到其他输入,并打印2147483647三次,然后结束程序。

流提取运算符>>指出您无法流式传输那么大的数字并设置fail位,并且不会修改 x 的值。

从该输入流(在本例中cin)的后续读取立即失败,因此x的值保持不变(在本例中为未定义)。

最新更新