这是我的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


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

08-24 18:20