C++,如果无法正常工作
C++ if else if not working properly
我是 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"( 并对所有案例遵循此格式
您的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;}
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- sdl软件渲染器不工作,工作在硬件加速的一个
- C++程序已停止工作-求解常微分方程