0

if 语句是否以这种方式工作?这是一个“猜数字”的游戏。第一个 if 表示更高/更低,第二个 if 表示您是否在 50、100 或 100+ 范围内。

两者都应该同时工作,但我得到一个错误。

'| 之前的第 37 行意外的主要表达式 |' 令牌,第 38 行应为 ';' 在'cout'之前

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <cstdio>
using namespace std;

int main()
{
    int x;
    cout << "Please enter a number\n";

    srand(time(0));
    int y = rand();

    while (x != y)
    {
        cin >> x;
        {

        if (!(cin.good()))            //1st if
        {
           cout << "No letters noob" << endl;
           cin.clear();
           cin.sync();
        }
        else if (x < y)
           cout << "Go higher" << endl;
        else if (x > y)
           cout << "Go lower" << endl;
        else
           cout << "You win!!" << endl;
        }

        {

        if (y - x - 50 <= 0) || (x - y - 50 <= 0)        //2nd if
           cout << "within 50 range" << endl;
        else if (y - x - 100 <= 0) || (x - y - 100 <= 0)
           cout << "within 100 range" << endl;
        else
           cout << "100+ value away" << endl;
        }
    }
cin.get();
getchar();
return 0;

}
4

2 回答 2

4

你缺少括号。

例如,这一行:

if (y - x - 50 <= 0) || (x - y - 50 <= 0) 

应该读:

if ((y - x - 50 <= 0) || (x - y - 50 <= 0)) 

因为整个 if 条件必须用括号括起来。

看起来你可能还有其他一些问题。

于 2012-04-27T04:18:26.887 回答
0

除了@jonathan-wood 的正确答案之外,以下内容可能更清楚地表达了您的意图:

#include <cstdlib>
...
const int off_by = abs(x - y);

if (off_by <= 50) {
    ...
} else if (off_by <= 100) {
    ...
}

仅供参考:如果您认为它会提高代码的可读性,您也可以使用“or”和“and”而不是“||” 和 ”&&”。因此,以下内容是合法的:

if ((y - x - 50 <= 0) or (x - y - 50 <= 0)) {
    ...
}
于 2012-04-27T05:09:30.287 回答