c++ - 这个 bool 变量是如何工作的?

标签 c++ boolean

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

对于下面的代码,我不知道 bool 变量“more”究竟是如何工作的。它说只要“更多”为真,while 循环就会执行循环的内容,但是

  1. 计算机如何知道更多是真的?知道“更多”的字面意思是用户通过键盘输入额外的值是否足够聪明?此外,它是否知道负输入不被视为“更多”,而只有正输入被视为“更多”?
  2. 在while循环中,它说当输入值为0时more为false。但是,当它已经通过while循环时more为false在逻辑上没有意义,while循环仅在more为时运行真的!
  3. 我了解到,当“while 始终为真”时,我们将陷入无限循环。似乎 while 循环永远为真,因为 more = true。

请帮我解决这个问题!!

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 并不总是正确的,请参见 (2)。

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

相关文章:

c++ - Boost.Serialization 和 Boost.Python 双向 pickle

Swift:按钮启用不起作用?

c++ - 从 Nvidia PTX 访问 bool (C++11) 数组的可移植方法

javascript - boolean 值未通过 jQuery/$.get 传递 - 为什么?

java - 未在 JAXB 生成的类中设置默认 boolean 值

php - 如何将字符串转换为 boolean 值 php

c++ - 如何在 C++ 中拆分一行并从中提取值?

c++ - 在可被 7 整除的 vector 大小上完成时,是否存在导致快速排序算法出现段错误的原因?

c++ - 从 Windows 中的 waf 构建 Qt 程序中删除控制台

c++ - QML FontLoader 不工作