如果语句具有多个变量

时间:2019-08-29 04:41:46

标签: c++ if-statement comparison-operators

我正在尝试将.png语句用于多个比较操作,但是if变量在我的day语句中不起作用。

这是我的代码:

if

获取int day; string rain; cout << "What day of the week is it?" << endl; cin >> day; while (0 < day < 8) { cout << "Is it raining? Please type 'yes' or 'no' " << endl; cin >> rain; if ((0 < day < 3) && (rain == "yes")) cout << "Read in bed" << endl; else if ((0 < day < 3) && (rain == "no")) cout << "Go out and play!" << endl; else if ((2 < day < 8) && (rain == "yes")) cout << "Take an umbrella!" << endl; else cout << "No umberella needed" << endl; cout << "What day of the week is it?" << endl; cin >> day; } cout << "Invalid day sorry" << endl; Read in bed,但从未获取go out and play

如果我输入Take an umbrella,我的代码也可以使用。

4 个答案:

答案 0 :(得分:2)

您需要使用逻辑AND(day)运算符来更正涉及&&变量的条件。

例如,0 < day < 8表示您正在针对两个不同的值测试day,即day是否在此范围内。因此,在您的情况下,应使用逻辑运算符和&&组合这两个比较。因此,应该是这样的:

day > 0 && day < 8

在比较day的其他条件下也是如此。


有关逻辑运算符的更多详细信息,请参见参考: https://en.cppreference.com/w/cpp/language/operator_logical

答案 1 :(得分:2)

使用7 < day && day < 0

一旦您写出0 < day < 3,C ++就会对其中之一进行评估,然后比较结果就会变成布尔值<整数

我觉得您的代码有更好的方法:我可以遍及所有端点

    while (true) {

        cout << "What day of the week is it?" << endl;
        cin >> day;

        if (7 < day &&  day < 0 ){
            cout << "Invalid day sorry" << endl;
            break;
        }

        cout << "Is it raining? Please type 'yes' or 'no' " << endl;
        cin >> rain;

        if (0 < day && day < 3) {
            if (rain == "yes") {
                cout << "Read in bed" << endl;
            } else {
                cout << "Go out and play!" << endl;
            }
        } else {
            if (rain == "yes")
                cout << "Take an umbrella!" << endl;
            else
                cout << "No umberella needed" << endl;
        }

    }

答案 2 :(得分:0)

这与if语句和多个变量无关,您的0 < day < 3实际上应该读为0 < day && day < 3。顺便说一句,您不需要在相同的if语句的每个分支中对其进行测试,因此不太可能更改。

答案 3 :(得分:0)

这不是C ++的工作方式:

0 < day < 3

您必须更改

day > 0 && day < 3