C++ do-while 循环不循环

C++ do-While loop not looping

本文关键字:循环 do-while C++      更新时间:2023-10-16

这是我的 do-while 循环

do
{
    cout << "Enter the temperature tolerance for turning on the cooling" << endl
    << "1.50 <= ToleranceCoolOn <= 6.00 (degrees Celsius)" << endl
    << "and toleranceCoolOn > toleranceHeatOff" << endl;
    cin >> tempTolCoolOn;
} 
while ( !(tempTolCoolOn < tempTolerCoolOnMax && tempTolCoolOn > tempTolerCoolOnMin) && !(tempTolCoolOn > tempTolHeatOff));

这个想法是,当我键入一个大于tempTolerCoolOnMax(6.0),小于tempTolerCoolOnMin(1.5)和小于tempTolHeatOff(2.0)的数字时,它应该重复循环,直到我得到那些正确的答案。但是,在输入 (6.0001) 后,它会跳过循环并继续下一个循环。关于为什么会发生这种情况的任何想法?

您在程序显示的提示中拥有所需的规范 - 为什么不像那样编写它?

while (! (tempTolCoolOnMin <= tempTolCoolOn && tempTolCoolOn <= tempTolerCoolOnMax && tempTolCoolOn > tempTolHeatOff))

特别是,当您具有逻辑/代数结构时,例如:

1.50 <= ToleranceCoolOn <= 6.00

我发现在语法中尽可能相似地对表达式进行编码很有用C++:

1.50 <= ToleranceCoolOn && ToleranceCoolOn <= 6.00

顺便说一句 - 我不喜欢这些变量名称;我发现它们很难相互区分。

我想你想要

!(tempTolCoolOn < tempTolerCoolOnMax && tempTolCoolOn > tempTolerCoolOnMin && tempTolCoolOn > tempTolHeatOff)

作为循环条件。

它应该是

while ( !(tempTolCoolOn < tempTolerCoolOnMax) && !(tempTolCoolOn > tempTolerCoolOnMin) && !(tempTolCoolOn > tempTolHeatOff));