C++程序不会进入循环
C++ Program won't enter for loop
好吧,这是我的代码中给我带来问题的部分。我想让它做的是接受一个分数,决定它是否是一个有效的分数,如果不是,则不断要求一个有效数字。然而,它甚至不会进入循环,所以……有什么建议吗?我已经编程了一段时间,但我还是很新,所以额外的解释很棒!这也是我第一次在for循环中使用布尔值。
for (bool b_valid=false; b_valid=false ; )
{
cin >> n_grade;
b_valid = true;
if (n_grade>100 || n_grade<0)
{
cout << "Invalid grade: Re-enter a number between 0-100 : " << endl;
cin >> n_grade;
b_valid = false;
}
}
您的条件是一个赋值:b_valid=false
。它的计算结果将为false,循环将永远不会执行。你的意思是
for(bool b_valid = false; b_valid == false; )
^^^^
有一种编码风格要求将比较中的常量作为第一个参数,如if(false == b_valid)
。在这种情况下,如果不小心键入了=,则会出现编译器错误。在任何情况下,当您编写了一个布尔表达式的赋值时,许多编译器都会发出警告。要么你的没有那么挑剔,要么你只是忽视了警告。
我恭敬地不同意其他答案(遗憾的是,投票支持率很高)。
不要将布尔值与true
或false
进行比较
这是荒谬的、多余的,会导致错误(就像你的情况一样)。
只需测试价值本身。即写入! b_valid
。
此外,在这里使用for
循环明显具有误导性。改为使用while
:
while (! b_valid) {
…
}
您在循环条件('=')中使用了赋值,它应该是'===':
for (bool b_valid=false; false==b_valid; )
for( a; b; c ) { body; }
与相同(范围除外)
a;
while (b) {
body;
c;
}
让我们为您的代码做这件事:
bool b_valid=false;
while (b_valid = false) { // uh-oh
我们不必再往前走了。这是一项任务,而不是比较。它将b_valid
设置为false,然后检查它是否为true。因为它从来都不是,所以循环永远不会运行。
但您真正想要的是do
/while
循环:
bool b_valid;
do {
cin >> n_grade;
if ( n_grade>100 || n_grade<0 ) {
cout << "Invalid grade: Re-enter a number between 0-100 : " << endl;
// let the next pass through the loop re-read n_grade
b_valid = false;
}
else {
b_valid = true;
}
} while (!b_valid);
do while循环总是至少运行一次。
相等比较运算符是==
。现在您的条件是b_valid=false
,它只返回false
。
=是赋值运算符
==是比较运算符
所以你的for循环约束没有检查任何东西。。。
或者使用while循环:
bool b_valid = false;
cin >> n_grade;
while(!b_valid){
if(n_grade>100 || n_grade<0) {
b_valid = true;
} else {
cout << "Invalid grade: Re-enter a number between 0-100 : " << endl;
cin >> n_grade;
}
}
您可以将代码重构为while循环。例如:
bool b_valid = false;
while( !b_valid )
{
cin >> n_grade;
b_valid = true;
if (n_grade>100 || n_grade<0)
{
cout << "Invalid grade: Re-enter a number between 0-100 : " << endl;
cin >> n_grade;
b_valid = false;
}
}
- C++程序在循环后给出奇怪的int值
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 为什么我的程序在for循环中k=0时返回垃圾值
- 密码登录程序将永远循环并显示不正确的结果
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 而循环:简单的除法程序输出零,不明白为什么
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 虽然循环在使用回车键时不退出程序
- 如何调试我的 while 循环C++程序?
- if/else 循环:C++程序:不会显示最终提示/最终循环
- 简单的C 嵌套以用于循环程序,以打印带有星星错误的正方形
- 带有空间的C 星号循环程序
- 循环程序的行为是不可预测的
- 如何解决嵌套循环程序的问题
- 对我的做边循环程序感到困惑
- gcc和clang都无法编译循环程序
- 需要帮助do-while循环程序?(c++)
- 一个用c++编写的简单游戏循环程序
- 如何循环程序,使其继续执行