我的目标是创建一个C ++程序,该程序重复执行一大块代码,直到用户输入适当的值并使用while循环执行此操作。我的代码只是反复重复,即使我输入“0”,它仍然会重复循环中的代码块。
这是我的源代码:
#include <iostream>
using namespace std;
int main()
{
int num = 0;
bool repeat = true;
while (repeat = true)
{
cout << "Please select an option." << endl;
cout << "[1] Continue Program" << endl;
cout << "[0] Terminate Program" << endl;
cout << "---------------------" << endl;
repeat = false;
cin >> num;
cout << endl;
if (num = 1)
{
repeat = true;
//execute program
}
else if (num = 0)
repeat = false;
else
cout << "Please enter an appropriate value.";
}
return 0;
}
答案 0 :(得分:2)
while (repeat = true)
^^
是你的一个问题:
while (repeat == true)
^^
通过赋值,条件始终求值为真。
有些人主张使用 Yoda condition 来避免这些拼写错误。另一种方法是简单地编译具有最高警告级别的程序:
-Wall
答案 1 :(得分:2)
检查您的操作员。您在while和if参数中使用赋值运算符=
而不是比较运算符==
。
答案 2 :(得分:1)
while (repeat = true)
在while
条件中,您使用的是赋值运算符=
,而不是等式==
。
它是有效的C ++语法,但不是您所期望的。 repeat
已分配给true
,因此条件始终为真。
if (num = 1)
和else if (num = 0)
中存在相同的错误。