C51单片机高效入门(第2版)
上QQ阅读APP看书,第一时间看更新

4.2 条件运算符和条件表达式

如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。

C语言中有一个三目运算符,它就是“?:”条件运算符,它要求有3个运算对象。它可以把3个表达式连接构成1个条件表达式。

由条件运算符组成条件表达式的一般形式为

表达式1?表达式2:表达式3

其求值规则为:当逻辑表达式的值为真时(非0值)时,整个表达式的值为表达式2的值;当逻辑表达式的值为假(值为0)时,整个表达式的值为表达式3的值。要注意的是条件表达式中逻辑表达式的类型可以与表达式2和表达式3的类型不一样。

条件表达式通常用于赋值语句之中。

例如条件语句:

978-7-111-30335-0-Chapter04-14.jpg

可用条件表达式简写为

978-7-111-30335-0-Chapter04-15.jpg

执行该语句的语义是:如x<y为真,则把x赋予变量min,否则就把y赋给min。

很明显这样写的结果和含义都和上面的一段程序是一样的,但是代码却比上一段程序要少很多,编译的效率相对来说也就高些,但有着和复合赋值表达式一样的缺点,就是可读性相对较差。在实际应用时要根据自己习惯来使用,这样可以有助于程序的调试和编写,也便于程序日后的修改与更新。

使用条件表达式时,还应注意以下几点:

1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。

因此

978-7-111-30335-0-Chapter04-16.jpg

可以去掉括号而等价为

978-7-111-30335-0-Chapter04-17.jpg

2)条件运算符“?”和“:”是一个整体,即一个运算符,我们不能将其分开单独使用。

3)条件运算符的结合方向是自右向左的。

例如:

978-7-111-30335-0-Chapter04-18.jpg

等价为

978-7-111-30335-0-Chapter04-19.jpg

它类似于if语句的嵌套使用,这也就是条件表达式嵌套的情形,即其中的表达式3又是

1个条件表达式。

【例4-6】输入一个字符。判别它是否大写字母,如果是,将其转换为小写,否则不转换。然后输出最后得到的字符。

978-7-111-30335-0-Chapter04-20.jpg