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

标签 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;<br/> cout<<"Commission for Apple Rs. " <<com<<endl;

感谢您的建议。

最佳答案

您应该编写 if(ID =="A"|| ID == "a,而不是 if(ID =="A"||"a"){ "){ 因为你的语句:if(ID =="A"||"a"){ 表示 if (ID 是“A ““a”的 ascii)。 “a”的ascii大于0,这意味着它在if语句中将被读取为true值。这就是为什么你的语句将与 if(ID ==A"|| true){ 相等,这就是为什么只有这条语句会被执行。

关于C++ if else if 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42849714/

相关文章:

c++ - 声明和定义函数静态会产生 "undefined reference to function_name()"

c++ - 如何将文件读入元组 vector ?

c++ - C++ 方法和类的正则表达式

c++ - 使用顶点着色器 GLSL 永久移动顶点

c++ - 导致循环依赖的类模板

c++ - Qt Quick - 如何使用 setContextProperties()

c# - 动态端口转发 libssh C

c++ - std::getline 在最后一次出现定界符后跳过来自 std::cin 的输入,但不使用来自 std::istringstream 的输入

c++ - 从 ESP8266 Arduino 连接到我的服务器

c++ - C++中如何区分有理数和无理数