《C程序设计语言(第2版新版)典藏版》 —2.11 条件表达式

举报
华章计算机 发表于 2019/12/06 20:39:13 2019/12/06
【摘要】 本节书摘来自华章计算机《C程序设计语言(第2版新版)典藏版》一书中第2章,第2.11节,作者是[美]布莱恩W. 克尼汉 (Brian W. Kernighan) 丹尼斯M. 里奇 (Dennis M. Ritchie),徐宝文 李志译 尤晋元 审校。

2.11   条件表达式

下面这组语句

image.png

用于求a与b中的较大者,并将结果保存到z中。条件表达式(使用三元运算符“:”)提供了另外一种方法编写这段程序及类似的代码段。在表达式

image.png

中,首先计算expr1,如果其值不等于0(为真),则计算expr2的值,并以该值作为条件表达式的值,否则计算expr3的值,并以该值作为条件表达式的值。expr2与expr3中只能有一个表达式被计算。因此,以上语句可以改写为:

image.png

应该注意,条件表达式实际上就是一种表达式,它可以用在其他表达式可以使用的任何地方。如果expr1与expr3的类型不同,结果的类型将由本章前面讨论的转换规则决定。例如,如果f为float类型,n为int类型,那么表达式

image.png

是float类型,与n是否为正值无关。

条件表达式中第一个表达式两边的圆括号并不是必需的,这是因为条件运算符 : 的优先级非常低,仅高于赋值运算符。但我们还是建议使用圆括号,因为这可以使表达式的条件部分更易于阅读。

采用条件表达式可以编写出很简洁的代码。例如,下面的这个循环语句打印一个数组的n个元素,每行打印10个元素,每列之间用一个空格隔开,每行用一个换行符结束(包括最后一行):

image.png

在每10个元素之后以及在第n个元素之后都要打印一个换行符,所有其他元素后都要打印一个空格。编写这样的代码可能需要一些技巧,但比用等价的if-else结构编写的代码要紧凑一些。下面是另一个比较好的例子:

image.png

练习2-10   重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。