0
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?怎么了?'

4

2 回答 2

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

您的 while 条件错误,应该是:

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

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

在这种情况下

(z != 3, 2, 1)

它将评估 z != 3,然后是 2,最后将使用 1,您的 while 将如下所示:

while(1);

这是一个无限循环。

于 2013-10-14T15:11:24.920 回答
0

问题可能落在 while 条件上。表达式的返回值"z != 3, 2, 1"将计算为“1”,这在 C++ 中表示为真。所以会有一个无限循环。尝试重写条件。exp。喜欢"z != 3 || z != 2 || z != 1"

于 2013-10-14T15:18:01.953 回答