C++ If Else conditions

C++ If Else conditions

本文关键字:conditions Else If C++      更新时间:2023-10-16

我已经尝试了这么长时间,似乎无法让它发挥作用。对于每个输入值,程序始终引用第一个条件。有人知道代码出了什么问题吗?

#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;
}

重写保护

0 <= grade <= 59

带有

0 <= grade && grade <= 59

C++这样解析你的表达式:

(0 <= grade) <= 59

因此它将CCD_ 1值与59进行比较。也就是说,布尔true是1,并且第一个if块被触发

您在检查范围条件时做得不对。测量量程的正确方法是使用&&运算符。

这样做:

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

为每个if条件替换类似

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

它被这样分析。0 <= x被评估并且被确定为真或假。这些布尔值分别由1或0表示。然后对得到的1 <= 590 <= 59进行评估,并且将始终被认为是真的。

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