前面内容介绍了条件结构,并通过示例探讨了该结构的各种不同方法。C语言还提供了一种称为“条件运算符”的特殊运算符,它可以用于条件表达式中,以提供与if-else等同的结构。此运算符是?和:符号的组合,它是一个三目运算符,即具有三个参与运算的操作数,其语法规则如下:
表达式1 ? 表达式2:表达式3
其中,表达式1返回1(真)或0(假),其值可以为真,也可以为假。如果表达式1的值为真,则以表达式2的值作为整个条件表达式的值。否则,以表达式3的值作为整个条件表达式的值。条件运算符通常用于赋值语句中。其工作原理可以用图片形式进行描述,如下图所示。

例如,要找出两个数字中的最大值,可以编写:
max = num1 > num2 ? num1:num2;
可以看出,条件运算符需要三个操作数,一个是需要被赋值的操作数,另外两个是参与比较运算的操作数。该语句首先检查表达式num1>num2,判断其值是真还是假。如果此表达式的值为真,即num1>num2,则将num1赋值给max,否则,将num2的值赋值给max。
此运算符等同于如下的if-else结构
if(exprt1)
{
exprt2;
}
else
{
exprt3;
}
上述求较大值的示例等同于:
if(num1>num2)
max = num1;
else
max=num2;
如果在条件语句中,只执行单个的赋值语句时,则可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
例【1】条件运算符练习
编程要求:编写一个程序,要求用户输入基本工资,计算税后工资。
个人所得税收取规定:工资大于3500元的部分将扣除个人所得税。小于3500元的部分不扣除个人所得税。
程序清单 sample.c
#include <stdio.h>
int main()
{
double sal;
double rate;
printf("请输入基本工资:");
//接收用户输入的基本工资
scanf("%lf",&sal);
rate = ( sal < 3500 ) ? 0 : 0.05;
//计算税后工资
sal = sal - ( sal-3500 ) * rate;
printf("\n 税后工资为:%7.2f \n",sal);
}