《C程序设计语言(第2版新版)典藏版》 —2.11 条件表达式
2.11 条件表达式
下面这组语句
用于求a与b中的较大者,并将结果保存到z中。条件表达式(使用三元运算符“:”)提供了另外一种方法编写这段程序及类似的代码段。在表达式
中,首先计算expr1,如果其值不等于0(为真),则计算expr2的值,并以该值作为条件表达式的值,否则计算expr3的值,并以该值作为条件表达式的值。expr2与expr3中只能有一个表达式被计算。因此,以上语句可以改写为:
应该注意,条件表达式实际上就是一种表达式,它可以用在其他表达式可以使用的任何地方。如果expr1与expr3的类型不同,结果的类型将由本章前面讨论的转换规则决定。例如,如果f为float类型,n为int类型,那么表达式
是float类型,与n是否为正值无关。
条件表达式中第一个表达式两边的圆括号并不是必需的,这是因为条件运算符 : 的优先级非常低,仅高于赋值运算符。但我们还是建议使用圆括号,因为这可以使表达式的条件部分更易于阅读。
采用条件表达式可以编写出很简洁的代码。例如,下面的这个循环语句打印一个数组的n个元素,每行打印10个元素,每列之间用一个空格隔开,每行用一个换行符结束(包括最后一行):
在每10个元素之后以及在第n个元素之后都要打印一个换行符,所有其他元素后都要打印一个空格。编写这样的代码可能需要一些技巧,但比用等价的if-else结构编写的代码要紧凑一些。下面是另一个比较好的例子:
练习2-10 重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
- 点赞
- 收藏
- 关注作者
评论(0)