Cha*_*ara 0 c++ integer integer-overflow
有人可以向我解释这个C++行为吗?
for (int i=0;i<3;++i){
int x;
std::cin >> x;
std::cout << x << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
如果我只输入一个大于INT_MAX的数字(如124124124124124),则输出:
2147483647
2147483647
2147483647
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是它识别我的输入是一个数字,但它切片因为x只能适应2147483647.我不明白为什么在输入那个只有ONCE的大数字后,输入"溢出"到其他输入,然后打印2147483647三次,然后结束程序.
流提取操作员>>注意到您无法在该数字中流式传输并设置该fail位,并且不会修改该值x.
从该输入流(cin在这种情况下)的后续读取立即失败,因此值x保持不变(在这种情况下,未定义).
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |