如果我在 C++ 中为 int 提供双精度,输入缓冲区中存储了什么?
what is stored in the input buffer if I provide double for an int in c++?
我的代码是:
int main()
{
int x,y,z;
cout<<"Please input first integer : ";
x = getInt();
cin>>z>>y;
cout<<x <<"n"<<z<<"n"<<y;
return 0;
}
当我提供输入时,例如
Please input first integer : 34.5
34
0
-2
Process returned 0 (0x0) execution time : 3.431 s
Press any key to continue.
这边发生了什么??
当尝试读取整数(使用>>
(时,输入34.5
与字符串34abcd
或34 42
没有什么不同。
operator>>
读取可能是整数一部分的字符,3
和4
,然后停止(将其余部分留在输入缓冲区中(。
继续cin >> z
时,缓冲区仍包含.5
。由于.
不能是整数的一部分,因此输入失败,z
设置为 0。
之后,流处于失败状态,甚至不会尝试输入y
。如果我们想尝试更多输入,则必须清除流状态。
由于显示值时y
仍未初始化,因此结果变得复杂。-2
是这种未定义行为的一种可能影响。
如果提取失败(例如,如果在数字所在的位置输入了一个字母( 预期(,值保持不变,并设置故障位。
因此,对<<的后续调用将失败(设置了故障位(。
相关文章:
- 套接字读取后,我在缓冲区中看到意外输入
- 清除输入缓冲区后未提取字符串流
- 快速读取标准输入缓冲区,无需检查
- C++ 为什么还剩下输入缓冲区?
- C++ - 有什么方法可以将输入插入缓冲区/停止 cin.忽略需要输入?
- 如果输入缓冲区不为空,请使用getchar.()检测Ctrl+d
- 如果我在 C++ 中为 int 提供双精度,输入缓冲区中存储了什么?
- 有没有办法将两个输入图像堆叠到卤化物发生器中的单个 4 维缓冲区中?
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 如何重复使用原始输入缓冲区内存?
- 从输入缓冲区读取
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- 多线程使用者未产生与使用升压环形缓冲区的输入相同的输出
- 从超强的AndroidAudioIO输入读取缓冲区
- 安全操作以清除C++中的空输入缓冲区
- 如何检查输入缓冲区是否为空
- 我可以做一个循环,直到“std::cin”在输入缓冲区中看到“”字符
- 从gstreamer缓冲区创建输入张量
- 从缓冲区输入的位
- Directx10,实例化渲染,顶点缓冲区输入