The C Programming Language(第 2 版) 笔记 / 2 类型、运算符与表达式 / 2.6 关系运算符与逻辑运算符

目录、参考文献


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

关系运算符包括下列几个运算符:>>=<<=,它们具有相同的优先级
优先级仅次于它们的是相等性运算符:==!=

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

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

for (i = 0; i < lim - 1 && (c = getchar()) != '\n' && c != EOF; ++i) 
    s[i] = c;

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

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

i < lim - 1 && (c = getchar()) != '\n' && c != EOF

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

(c = getchar()) != '\n'

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

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

逻辑非运算符 ! 的作用是将非 0 操作数转换为 0,将操作数 0 转换为 1
该运算符通常用于类似 if (!valid) 的结构中
一般不采用 if (valid == 0) 的形式

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


目录、参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值