我是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;
感谢您的建议。
答案 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)
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;}