《C程序设计语言(第2版新版)典藏版》 —2.6 关系运算符与逻辑运算符

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

2.6   关系运算符与逻辑运算符

关系运算符包括下列几个运算符:

image.png

它们具有相同的优先级。优先级仅次于它们的是相等性运算符:

image.png

关系运算符的优先级比算术运算符的低。因此,表达式i < lim-1等价于i < ( lim-1 )。

逻辑运算符&&与||有一些较为特殊的属性。由&&与||连接的表达式按从左到右的顺序进行求值,并且,在知道结果值为真或假后立即停止计算。绝大多数C语言程序运用了这些属性。例如,下列是在功能上与第1章的输入函数getline中的循环语句等价的循环语句:

image.png

在读入一个新字符之前必须先检查数组s中是否还有空间存放这个字符,因此必须首先测试条件i<lim-1。如果这一测试失败,就没有必要继续读入下一字符。

类似地,如果在调用getchar函数之前就测试c是否为EOF,结果也是不正确的,因此,函数的调用与赋值都必须在对c中的字符进行测试之前进行。

运算符&&的优先级比||的优先级高,但两者都比关系运算符和相等性运算符的优先级低。因此,表达式

image.png

就不需要另外加圆括号了。但是,由于运算符!=的优先级高于赋值运算符的优先级,因此,在表达式

image.png

中,就需要使用圆括号,这样才能达到预期的目的:先把函数返回值赋值给c,然后再将c与'\n'进行比较。

根据定义,在关系表达式或逻辑表达式中,如果关系为真,则表达式的结果值为数值1;如果为假,则结果值为数值0。

逻辑非运算符!的作用是将非0操作数转换为0,将操作数0转换为1。该运算符通常用于下列类似的结构中:

image.png

一般不采用下列形式:

image.png

当然,很难评判上述两种形式哪种更好。类似于!valid的用法读起来更直观一些(“如果不是有效的”),但对于一些更复杂的结构可能会难于理解。

练习2-2   在不使用运算符&&或||的条件下编写一个与上面的for循环语句等价的循环语句。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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