C ++ if语句

时间:2013-10-09 02:29:42

标签: c++

我无法让我的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 个答案:

答案 0 :(得分: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)都是评估为真。

答案 1 :(得分:1)

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

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

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

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

总是是真的。

答案 2 :(得分:0)

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

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

被解释为“if(day是一个)或(6不为零)或(seven不为零)然后......”

写这个的正确方法是

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

答案 3 :(得分:0)

使用if ( day == 1 || 6 || 7)它将首先执行day == 1,它将返回0或1.然后它将继续使用非零(即真)数字并始终给出1个结果,即为真。 / p>

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