C ++如果有其他条件

时间:2014-10-07 08:00:52

标签: c++ if-statement

我已经尝试了这么久,我似乎无法让它发挥作用。程序一直参考每个输入值的第一个条件。有谁知道代码有什么问题吗?

#include <iostream>

using namespace std;

int main()
{
    int grade;

    cout <<"Enter a grade between 0 and 100:";
    cin>>grade;

    if (0 <= grade <= 59){
        cout<<"The grade for " <<grade<<" is  F";
    }
    else if (60 <= grade <= 69){
        cout<<"The grade for " <<grade<<" is  D";
    }
    else if (70 <= grade <= 79){
        cout<<"The grade for " <<grade<<" is  C";
    }
    else if (80 <= grade <= 89){
        cout<<"The grade for " <<grade<<" is  B";
    }
    else if (90 <= grade <= 100){
        cout<<"The grade for " <<grade<<" is  A";
    }
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:10)

重写警卫

0 <= grade <= 59

0 <= grade && grade <= 59

C ++解析你的表达式:

(0 <= grade) <= 59

所以它将bool值与59进行比较。也就是说,布尔true为1并触发第一个if

答案 1 :(得分:1)

你不能以这种方式写0 <= x <= 59。或者更确切地说,你可以,但它并不代表你认为它意味着什么。

这样分析。 0 <= x被评估,并被确定为真或假。这些布尔值分别由1或0表示。然后评估结果1 <= 590 <= 59,并始终被视为真。

顺便说一下,我认为,当你学习编程时,Java会成为一种很好的语言。它的强类型,这大致意味着这样的事情会产生编译时错误,而不是做一些你并不真正意味着的事情。

答案 2 :(得分:1)

检查范围条件你做错了。 衡量范围的正确方法是使用&&运算符。

做这样的事情:

if (grade>=0 && grade <= 59)  // it means grade is greater or equal to 0 and grade is lesser or equal to 59 

为每个if条件替换类似的