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

use*_*878 0 c++ loops infinite while-loop

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);
}
Run Code Online (Sandbox Code Playgroud)

我的意见是:提出"你的号码",直到z为3或2或1?怎么了?'

xor*_*guy 5

while (z != 3, 2, 1);
Run Code Online (Sandbox Code Playgroud)

你的条件有误,应该是:

while (z != 3 && z != 2 && z != 1);
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下

(z != 3, 2, 1)
Run Code Online (Sandbox Code Playgroud)

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

while(1);
Run Code Online (Sandbox Code Playgroud)

这是一个无限循环.