【问题标题】:C++ While Loop Break [closed]C ++ While循环中断[关闭]
【发布时间】:2014-09-25 02:21:20
【问题描述】:

我的目标是创建一个 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;

}

【问题讨论】:

  • 使用调试器逐行执行程序时,您注意到了什么?

标签: c++ loops while-loop break repeat


【解决方案1】:
  while (repeat = true)
                ^^

是你的问题之一:

  while (repeat == true)
                ^^

对于赋值,条件总是为真。

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

-Wall

【讨论】:

  • 打开所有警告并听取它们?
  • @πάνταῥεῖ:确实或替代地,玩尤达! ;-)
  • 哇,我发现我的脸呈绿色 ;-) ...
  • 最佳答案,这是
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    while (repeat = true)
    

    while 条件中,您使用的是赋值运算符=,而不是相等==

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

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

    【讨论】:

    • 打开所有警告并聆听它们?
    • 这是正确答案,并且比另一个更具描述性。
    • 谢谢!我是编程新手,非常感谢您的帮助!
    • @MichaelBarneyJr 正如 πάντα ῥεῖ 所说,某些编译器可能会对此发出警告,请检查您的编译器是否是其中之一。