我的if else声明有什么问题?

时间:2015-02-03 12:18:38

标签: c++ arrays if-statement

我很难弄清楚我的代码有什么问题。这是我的代码,当我运行它时,它会重新显示相同的单词,即使我输入了不同的数字。请帮助我,非常感谢。

int main()
{
    const int size = 4;
    double arr[size];
    int i;

    cout << "Input numbers: ";

    for(i=0;i<4;i++)
    {
        cin >> arr[i];
    }

    for(i=0;i<size;i++)
    {
        if(0<=arr[i]<=5)
        {
            cout << "HEY" << endl;
        }
        else if(0>arr[i])
        {
            cout << "Hello" << endl;
        }
        else if(10<arr[i]<20)
        {
            cout << "Haha" << endl;
        }
        else
        {
            cout << "Hoho";
        }

    }

    cin.ignore();   cin.ignore();
    return 0;
}

2 个答案:

答案 0 :(得分:1)

if(0<=arr[i]<=5)应写为:

if( arr[i] >= 0 && arr[i] <= 5 )

else if(10<arr[i]<20)

else if( 10 < arr[i] && arr[i] < 20 )

如果您需要逻辑anding条件,即您希望两个条件都为真,则应使用&&运算符。如果第一次测试失败,则不需要评估其他测试:

从上面给出的msdn链接:

  

条件AND运算符(&amp;&amp;)执行其bool操作数的逻辑AND,但只在必要时才计算其第二个操作数。

答案 1 :(得分:0)

不仅是错误的范围(正如其他人指出的那样)。与

    else if(0>arr[i])
    {
        cout << "Hello" << endl;
    }
    else if(10<arr[i]<20)
    {
        cout << "Haha" << endl;
    }
    else
    {
        cout << "Hoho";
    }

只有第一个else if(&#34; Hello&#34;)才会执行正arr [i]。它捕获大于5的所有数字。