C ++ if else如果不能正常工作

时间:2017-03-17 05:17:01

标签: c++

我是c ++的新手。我试图运行一个有两个输入的控制台应用程序。 这是我的代码

#include <iostream>

#include <string>

using namespace std;

int main(){
    string ID;
    double sal_val,com;
    cout<<"Insert fruit ID"<<endl;
    cin >> ID;
    cout<<"You entered"<<ID<<endl;
    cout<<"Insert sale Value"<<endl;
    cin >> sal_val;
    cout<<"You entered"<<sal_val<<endl;

    if(ID =="A"||"a"){
        com=(sal_val*4.5)/100;          
        cout<<"Commission for Apple Rs. " <<com<<endl;}
    else if(ID =="B"||"b"){
        com=(sal_val*5)/100;
        cout<<"Commission for Banana Rs. " <<com<<endl;}
    else if(ID =="O"||"o"){
        com=(sal_val*5.5)/100;
        cout<<"Commission for Orange Rs. " <<com<<endl;}
    else if(ID =="G"||"g"){
        com=(sal_val*6)/100;
        cout<<"Commission for Grapes Rs. " <<com<<endl;}
}

当我运行它时,无论我为“ID”赋予什么值,它都会给出第一个if语句的结果。每次只有这两行 com=(sal_val*4.5)/100;
cout<<"Commission for Apple Rs. " <<com<<endl;

感谢您的建议。

5 个答案:

答案 0 :(得分:2)

而不是if(ID =="A"||"a"){,您应该写if(ID =="A"|| ID == "a"){因为您的陈述:if(ID =="A"||"a"){表示如果 ID是&#34; A&# 34; &#34; a&#34; 的ascii。 ascii of&#34; a&#34;大于0,表示它将在 if 语句中读作true值。这就是为什么你的陈述与if(ID =="A"|| true){相等的原因,这就是为什么只会执行这个陈述。

答案 1 :(得分:1)

这是因为第一个if中的表达式始终为真:

  ID == "A"  ||  "a"

这并不意味着

  ID == "A"  ||  ID == "a"

这可能是你想要的。第一个表达式计算OR的左侧,可能是true或false,但右侧始终为true:表达式"a"非零,因此为真。

答案 2 :(得分:1)

在布尔条件中没有逻辑或关系运算符的非零值将始终返回true。因此,"a"中的if将始终返回true。这就是为什么只有第一个if始终执行的原因。修改if if-else-if如下所示:

if(ID =="A"||ID == "a"){
        com=(sal_val*4.5)/100;          
        cout<<"Commission for Apple Rs. " <<com<<endl;}
    else if(ID =="B"||ID == "b"){
        com=(sal_val*5)/100;
        cout<<"Commission for Banana Rs. " <<com<<endl;}
    else if(ID =="O"||ID == "o"){
        com=(sal_val*5.5)/100;
        cout<<"Commission for Orange Rs. " <<com<<endl;}
    else if(ID =="G"||ID == "g"){
        com=(sal_val*6)/100;
        cout<<"Commission for Grapes Rs. " <<com<<endl;}

为了将变量与多个值进行比较,需要在代码中编写各个条件,这些条件是为每个if-else-if构造编写的。

答案 3 :(得分:1)

as @ user1438832在评论中说你必须使用If(ID ==“A”|| ID ==“a”)并按照这种格式表示所有情况

答案 4 :(得分:0)

ifelse if条件导致您的问题。

if(ID =="A"|| ID == "a"){
        com=(sal_val*4.5)/100;
        cout<<"Commission for Apple Rs. " <<com<<endl;}
    else if(ID =="B"||ID == "b"){
        com=(sal_val*5)/100;
        cout<<"Commission for Banana Rs. " <<com<<endl;}
    else if(ID =="O"|| ID == "o"){
        com=(sal_val*5.5)/100;
        cout<<"Commission for Orange Rs. " <<com<<endl;}
    else if(ID =="G"|| ID == "g"){
        com=(sal_val*6)/100;
        cout<<"Commission for Grapes Rs. " <<com<<endl;}