C ++ do-while循环不循环

时间:2013-11-03 06:09:30

标签: c++ visual-studio loops

这是我的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)时,它会跳过循环并继续下一个循环。关于为什么会发生这种情况的任何想法?

3 个答案:

答案 0 :(得分:1)

您在计划显示的提示中有您想要的规格 - 为什么不编码呢?

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

特别是,当你有一个逻辑/代数结构,如:

1.50 <= ToleranceCoolOn <= 6.00

我觉得在C ++语法中尽可能类似地编写表达式很有用:

1.50 <= ToleranceCoolOn && ToleranceCoolOn <= 6.00

顺便说一下 - 我不是那些变量名的粉丝;我觉得它们很难相互区分。

答案 1 :(得分:0)

我想你想要

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

作为循环条件。

答案 2 :(得分:0)

应该是

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