0

我无法让我的 if 语句起作用。并且不管周末的数字是多少,如果声明不断出现。我知道我之前问过一个类似的问题,但无论我尝试了什么都行不通

#include <iostream> 
#include <string>
using namespace std;

int main ()
{
 int day;
    cout << " Enter day of the week " << endl;
    cin >> day;
    switch (day)
{
    case 1 : 
    case 6 : 
    case 7 :
        cout << "weekend";
        break;

    case 2 : 
    case 4 :
        cout << "going to C++ Class";
        break;

    case 3 : 
    case 5 :
        cout << "studying for C++ Class";
        break;

    default :
        cout << "invalid day number";
    }

    if ( day == 1 || 6 || 7)
        cout << "weekend" << endl;
    else
        if (day == 2 || 4)
            cout << "Going to C++ Class";
        else 
            if (day == 2 || 5)
                cout << "studying for C++ Class";
            else 
                if ( day < 1 || day > 7)
                    cout << "bad day number";





    system("pause");
    return 0;

}

4

4 回答 4

4

改变

if ( day == 1 || 6 || 7)

if ( day == 1 || day == 6 || day == 7)

对于一些类似的if条件也是如此。


您的原始测试条件if (day == 1 || 6 || 7)等同于if ((day == 1)||6||7),始终评估为真,因为所有非零数字(在这种情况下,67)都被评估为真。

于 2013-10-09T02:30:46.273 回答
1

逻辑 OR 运算符||仅对布尔值进行操作,例如67不符合条件的字面值。您需要使用 C++ 中可用的关系运算符将条件分成有效<,>,<=,>=,==,!,etc的布尔语句。尝试使用:

if (day == 1 || day == 6 || day == 7)

6并且7实际上是C++ 中的真实值,并且会使您的条件始终为真,您当前的语句相当于:

if(day == 1 || true || true)

总是正确的。

于 2013-10-09T02:32:21.937 回答
0

C 和 C++ 可以将任何数值解释为逻辑值。零是假的,其他都是真的。因此语法如下:

if ( day == 1 || 6 || 7)

被解释为“如果(天为一)或(6 不为零)或(七不为零)则……”

正确的写法是

if ( day == 1 || day == 6 || day == 7)
于 2013-10-09T02:32:03.260 回答
0

与您一起if ( day == 1 || 6 || 7),它将首先执行 day==1,这将返回 0 或 1。然后它将继续与非零(即真)数字进行或运算,并始终给出 1 个结果,即真。

将其更改为if ( day == 1 || day == 6 || day == 7) if (day == 2 || day== 4)if (day == 2 || day == 5)

于 2013-10-09T02:35:16.433 回答