有人可以向我解释这种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
的值保持不变(在本例中为未定义)。