上QQ阅读APP看书,第一时间看更新
4.2 条件运算符和条件表达式
如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
C语言中有一个三目运算符,它就是“?:”条件运算符,它要求有3个运算对象。它可以把3个表达式连接构成1个条件表达式。
由条件运算符组成条件表达式的一般形式为
表达式1?表达式2:表达式3
其求值规则为:当逻辑表达式的值为真时(非0值)时,整个表达式的值为表达式2的值;当逻辑表达式的值为假(值为0)时,整个表达式的值为表达式3的值。要注意的是条件表达式中逻辑表达式的类型可以与表达式2和表达式3的类型不一样。
条件表达式通常用于赋值语句之中。
例如条件语句:
可用条件表达式简写为
执行该语句的语义是:如x<y为真,则把x赋予变量min,否则就把y赋给min。
很明显这样写的结果和含义都和上面的一段程序是一样的,但是代码却比上一段程序要少很多,编译的效率相对来说也就高些,但有着和复合赋值表达式一样的缺点,就是可读性相对较差。在实际应用时要根据自己习惯来使用,这样可以有助于程序的调试和编写,也便于程序日后的修改与更新。
使用条件表达式时,还应注意以下几点:
1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此
可以去掉括号而等价为
2)条件运算符“?”和“:”是一个整体,即一个运算符,我们不能将其分开单独使用。
3)条件运算符的结合方向是自右向左的。
例如:
等价为
它类似于if语句的嵌套使用,这也就是条件表达式嵌套的情形,即其中的表达式3又是
1个条件表达式。
【例4-6】输入一个字符。判别它是否大写字母,如果是,将其转换为小写,否则不转换。然后输出最后得到的字符。