有人可以向我解释这个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
,所以它会被切片。我不明白为什么在输入那个只有ONCE的大数字后,输入“溢出”到其他输入,并打印2147483647
三次,然后结束程序。
答案 0 :(得分:5)
流提取运算符>>
指出您无法在该数字中流式传输并设置fail
位,并且不会修改 {{1}的值}}
从该输入流(在这种情况下为x
)的后续读取会立即失败,因此cin
的值保持不变(在这种情况下,未定义)。