C++虽然循环中断

问题描述:

我的目标是创建一个C++程序,它会重复执行一段代码,直到用户输入适当的值并使用while循环执行。我的代码只是一遍又一遍地重复着,即使我输入“0”,它仍然会重复循环中的代码块。C++虽然循环中断

这里是我的源代码:

#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; 

} 
+1

当您使用调试器逐行执行程序时,您发现了什么? – 2014-09-25 02:23:07

while (repeat = true) 

while情况下,您正在使用的赋值运算符=,没有平等==

它是有效的C++语法,但不是您所期望的。 repeat被分配给true,所以条件总是如此。

if (num = 1)else if (num = 0)中存在相同的错误。

+0

切换所有警告并听取它们? – 2014-09-25 02:25:17

+0

这是正确的答案,并且比其他更具描述性。 – Chantola 2014-09-25 02:25:31

+0

谢谢!我对编程相当陌生,所以非常感谢帮助! – 2014-09-25 02:28:08

while (repeat = true) 
       ^^ 

是你的问题之一:

while (repeat == true) 
       ^^ 

某项任务,条件计算结果始终为真。

有人主张使用Yoda condition以避免这些错别字。另一种方法是简单地编译您的程序的最高警告级别:

-Wall 
+0

切换所有警告并聆听它们? – 2014-09-25 02:26:10

+0

@πάνταῥεῖ:事实上或者说,玩Yoda! ;-) – 2014-09-25 02:27:52

+0

Aww,绿色我在我脸上发现;-) ... – 2014-09-25 02:29:28

检查您的运营商。您在while和if参数中使用赋值运算符=而不是比较运算符==