c – 输入流失败后对输入变量的影响

c – 输入流失败后对输入变量的影响,第1张

概述我正在处理以下代码. #include <iostream>int main(){ std::cout << "Enter numbers separated by whitespace (use -1 to quit): "; int i = 0; while (i != -1) { std::cin >> i; std::cout << "Yo 我正在处理以下代码.

#include <iostream>int main(){  std::cout << "Enter numbers separated by whitespace (use -1 to quit): ";  int i = 0;  while (i != -1) {    std::cin >> i;            std::cout << "You entered " << i << '\n';  }}

我知道使用while(std :: cin>> i)本来会更好,但我不明白具体的情况.
如果我提供无效输入,则循环变为无限,因为输入流进入故障位状态.我的问题是输入变量i会发生什么?就我而言,无论先前输入的值如何,它都变为0.输入无效后为什么会变为0?这是预定义的行为吗?

解决方法 你得到零,因为你有一个pre-C 11编译器.在失败时保持输入值不变是最新标准中的新功能.旧标准要求如下:

If extraction fails,zero is written to value and failbit is set. If
extraction results in the value too large or too small to fit in
value,std::numeric_limits::max() or std::numeric_limits::min()
is written and failbit flag is set.

(source)

对于gcc,您需要将-std = c 11传递给编译器以使用新行为.

总结

以上是内存溢出为你收集整理的c – 输入流失败后对输入变量的影响全部内容,希望文章能够帮你解决c – 输入流失败后对输入变量的影响所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1215219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存