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