【发布时间】:2011-09-22 00:30:42
【问题描述】:
好的,这是我的代码中给我带来问题的部分。我不希望它做的是接受一个成绩,决定它是否是一个有效的成绩,然后继续询问一个有效的数字,如果不是。但是,它甚至不会进入循环,所以....有什么建议吗?我已经编程了一点,但我还是很新,所以额外的解释很棒!这也是我第一次在 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;
}
}
【问题讨论】:
-
你是说你的程序告诉你它甚至没有进入这个for循环吗?因为这就是问题标题所说的,但我不太明白你的问题。
-
你是在使用 gcc 你应该用
-Wall编译 -
如果我输入 900, 90, 900, 90, 900, 90, 900, 90 (ad infinitum) 代码将永远不会终止。你丢掉了一半的输入。
-
真的,好眼力!尽管在将 = 切换为 ==! 之后,我运行了几次程序后才弄清楚这一点不过谢谢!另外我注意到,在我重新输入数字后,如果它不是 0-100,那么我还有另一个输入,我必须无缘无故地做,所以我也修复了它!
-
如果您阅读编译器生成的警告,它会告诉您这是错误的。确保您在编译时带有 ZERO 警告(警告是编译器告诉您代码中存在逻辑错误的方式)。还将警告级别设置为高于默认值。