c++ - 条件运算符的嵌套
问题描述
我必须编写一个程序,我应该将员工age
的experience
(无论员工是否有经验)作为用户的输入并打印出他/她的薪水。工资受以下条件限制:
- 如果员工没有经验,工资= 2000,不论年龄。
- 对于有经验的员工:
- 如果年龄<=28,工资=3000。
- 如果 28<age<=35,工资=4800。
- 如果年龄>35,工资=6000。
我制作了以下 C++ 程序:
.
.
.
cout<<"The salary of the employee is Rs."<<(experience?sal1:2000); //LINE1
sal1=((age<=28)?3000:sal2);
sal2=((age<=35)?4800:6000);
return 0;
}
其中age
, sal1
,sal2
被声明为int
和。experience
bool
experience=1
由用户为有经验的员工输入,否则experience=0
。
但是无论何时输入experience==1
any age>28
,我都会得到意外的大积分结果,而当条件运算符嵌套时,代码会产生绝对完美的结果。(即我将表达式复制到LINE1sal1
中的真值sal2
表达式并将表达式复制到表达式中sal1
)
请解释这两个代码之间的区别是什么以及为什么在第一种情况下我会得到意想不到的结果。
注意:我使用 gcc g++ 编译器编译我的代码。请问是编译器的问题,还是运营商的问题,还是有其他问题。
解决方案
我认为如果您使用 plainif ... else if ... else
代替,无论是写作还是阅读,都会更容易理解逻辑。
也许像
int salary;
if (age <= 28)
{
salary = 3000;
}
else if (age > 28 && age <= 35)
{
salary = 4800;
}
else
{
// Age must be over 35 to come here
salary = 6000;
}
推荐阅读
- python - Django - 多个模型字段的总和
- spring-boot - 为什么 SpringFox 不公开@RepositoryRestResource?
- reactjs - 如何访问 React 组件的子节点以向它们添加包装器组件
- python - 如何将 \n 放入字符串中?
- sql - 保存不同货币的最佳做法是什么?
- python - Exchangelib - 如何保存来自特定主题行的最新附件
- c - WINAPI:使按钮文本具有正确的视觉样式
- java - HashMap 中的复合键,其中一个值具有无关关系
- arrays - SwiftUI - 在数组中索引的索引集
- c++ - 为什么在堆栈和堆上创建变量会产生相同的汇编代码?