首页 > 解决方案 > 条件运算符的嵌套

问题描述

我必须编写一个程序,我应该将员工ageexperience(无论员工是否有经验)作为用户的输入并打印出他/她的薪水。工资受以下条件限制:

我制作了以下 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和。experiencebool

experience=1由用户为有经验的员工输入,否则experience=0

但是无论何时输入experience==1any age>28,我都会得到意外的大积分结果,而当条件运算符嵌套时,代码会产生绝对完美的结果。(即我将表达式复制到LINE1sal1中的真值sal2表达式并将表达式复制到表达式中sal1

请解释这两个代码之间的区别是什么以及为什么在第一种情况下我会得到意想不到的结果。

注意:我使用 gcc g++ 编译器编译我的代码。请问是编译器的问题,还是运营商的问题,还是有其他问题。

标签: c++

解决方案


我认为如果您使用 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;
}

推荐阅读