C++中的整数和while循环..怎样
Integers and while loop in C++... how?
I.e,我有这个代码:
int main {
cin >> x;
while (x != 1 && x != 2 && x != 3) {
cout << "Invalid input, try again!" << endl;
cin >> x;
}
cout << "Hello, World";
}
当整数变量"x"为1、2或3时,它应该返回"Hello,World"。
但是,当我键入一个非整数值(即"Hello")时,为什么它会进入循环?
根据定义和初始化x
的方式,它可能会在每次输入非整数时进入循环,也可能只是偶尔进入循环。
如果您没有为x
分配任何值,那么如果您输入非整数,则x
的值在cin >> x
之后仍然未定义,因为转换失败,因此没有值写入x
。所以x
可以是任何数字,并且在程序中有未定义的行为。它有时可能会进入循环,有时可能不会。
如果最初将类似0的值分配给x
,那么如果转换失败,x
的值仍将为0,因为它没有更改,因此循环条件将为true,并将进入循环。
一种选择是只在转换成功的情况下循环,你可以这样做:
int main(void) {
while ((cin >> x) && x != 1 && x != 2 && x != 3) {
cout << "Invalid input, try again!" << endl;
}
cout << "Hello, World";
return 0;
}
如果遇到错误条件(EOF、转换失败等),cin >> x
将返回cin
,该值在布尔上下文中计算为false。
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么在 while 循环中返回表达式不起作用
- 如何使用 do while 循环确定最高值和最低值
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- OpenCV QT,显示视频的帧(不使用while循环)
- 在 while 循环中使用 pow() 函数 C++
- C++ 制作/命名不初始化的向量(在 while 循环中)
- std::getline没有在while循环中重新请求用户输入