C语言条件运算符(?:)的用法
前面我们讲到过,编程时总希望尽可能地减少代码的输入量。在C语言中,使用条件运算符可以代替 if…else… 语句(见图 1),不仅能减少代码输入量,还可以避免漏掉必需的

图 1:使用条件运算符
比如下面使用条件运算符的语句,表示当 total 的值小于等于 2000 时,把它的值增大为原来的 1.2 倍:total*1.20,当 total 的值大于 2000 时,把它的值增大为原来的 1.5 倍:total*1.50。
条件运算符可以看成“用问号
上面的语句 ① 中,因为给变量 total 赋值出现了两次,使用条件运算符可以更加简化为下面的形式:
条件运算符还可以出现在 if 语句不能出现的地方。比如下面的printf( )中,如果梨(pear)的个数大于 1,就打印其复数形式(在最后多打印一个 s),具体情况如图 2 所示。

图 2:条件运算符可以出现在 if…else… 语句不能出现的地方
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
{ }
括号。其一般格式如下:(condition)?(条件成立时执行的语句):(条件不成立时执行的语句) //condition 可以是任何形式的条件判断表达式

图 1:使用条件运算符
? :
可以替换 if…else… 语句比如下面使用条件运算符的语句,表示当 total 的值小于等于 2000 时,把它的值增大为原来的 1.2 倍:total*1.20,当 total 的值大于 2000 时,把它的值增大为原来的 1.5 倍:total*1.50。
(total<=2000)?(total*=1.20):(total*1.50); ①等价于:
if(total<=2000) {total *= 1.20;} else {total *= 1.50;}
条件运算符可以看成“用问号
?
提出一个问题,当它成立时,就做冒号:
之前的事;否则,就做冒号之后的事”。上面的语句 ① 中,因为给变量 total 赋值出现了两次,使用条件运算符可以更加简化为下面的形式:
total *= (total<=2000)?(1.20):(1.50);
条件运算符还可以出现在 if 语句不能出现的地方。比如下面的printf( )中,如果梨(pear)的个数大于 1,就打印其复数形式(在最后多打印一个 s),具体情况如图 2 所示。
printf("I ate %d pear%s.",numPear,(numPear>1)?("s"):(""));

图 2:条件运算符可以出现在 if…else… 语句不能出现的地方
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。