为什么会有无限循环?c ++

时间:2013-10-14 15:09:48

标签: c++ loops while-loop infinite

do{
    cout << "your number"; cin >> z;


   if (z > 4){
    cout << "invalid answer" << endl;}
   else if (z == 4){
   cout << " no" << endl;}
   else {
   cout  <<"great!"   << endl; }
} while (z != 3, 2, 1);
}

在我看来是这样的:提出“你的号码”,直到z为3或2或1?怎么了?'

2 个答案:

答案 0 :(得分:5)

while (z != 3, 2, 1);

你的状况不对,应该是:

while (z != 3 && z != 2 && z != 1);

如果您使用逗号,它将评估(计算)由它们分隔的所有表达式,并将使用最后一个表达式。

在这种情况下

(z != 3, 2, 1)

它将评估z!= 3,然后是2,最后将使用1,你的同时会看起来像这样:

while(1);

这是一个无限循环。

答案 1 :(得分:0)

问题可能在于while条件。表达式"z != 3, 2, 1"的返回值将计算为“1”,这在C ++中表示为true。所以会有一个无限循环。尝试重写cond。进出口。比如"z != 3 || z != 2 || z != 1"