C++,如果无法正常工作

C++ if else if not working properly

本文关键字:工作 常工作 如果 C++      更新时间:2023-10-16

我是 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;

谢谢建议。

而不是这个if(ID =="A"||"a"){,你应该写if(ID =="A"|| ID == "a"){因为你的语句:if(ID =="A"||"a"){表示如果(ID是"A">或"a"的ascii(。"a"的 ascii 大于 0,这意味着它将在 if 语句中被读取为true值。这就是为什么你的语句将与if(ID =="A"|| true){相等,这就是为什么只执行此语句的原因。

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

  ID == "A"  ||  "a"

这并不意味着

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

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

布尔

条件中没有逻辑或关系运算符的非零值将始终返回 true。所以"a"在第一个if总是会返回true.这就是为什么只有第一个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构造编写的代码编写各个条件。

正如@user1438832在评论中所说,你必须使用 If(ID=="A"||ID=="a"( 并对所有案例遵循此格式

您的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;}