我是编程新手,所以如果我的问题太基础,请原谅我。

对于以下代码,我不知道bool变量“more”是如何工作的。它说,当“更多”为真时,while循环将执行循环的内容,但是

  • 计算机如何知道更多的事实?是否足够聪明地知道“更多”在字面上意味着用户何时通过键盘输入附加值?另外,是否知道负输入不被视为“更多”,而仅正输入被视为“更多”?
  • 在while循环中,它说当输入值为0时,more为假。但是,从逻辑上讲,当它已经通过while循环时,more为false是不合理的,只有当more为真时才运行!
  • 我了解到,当“while始终为真”时,我们将得到一个无限循环。由于more = true,因此while循环似乎总是正确的。

  • 请帮我解决这个问题!
    vector<double> salaries;
    cout << "Please enter salaries, 0 to quit:" << endl;
    bool more = true;
    while (more)
    {
      double s;
      cin >> s;
      if (s == 0)
        more = false;
      else
        salaries.push_back(s);
    }
    

    最佳答案

    (1):计算机(或编译器)不够智能,无法将more连接到文字含义。

    (2):可以在循环内更改more,这是在输入0时发生的情况。将more更改为false后,将重新评估while (more)中的条件。由于more现在为false,因此退出了循环。

    (3):不,more并非始终为true,请参见(2)。

    关于c++ - 这个bool变量如何正确工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27354138/

    10-12 15:34