学习C第二章类型、运算符和表达式6: 关系和逻辑运算符
关系运算符(relational operators)有:
-
=
- <
- <=
它们有着相同的优先权(precedence)。 优先权仅次于它们(小于它们)的是相等运算符(equality operators):
- ==
- !=
关系运算符的优先权较算术运算符要低, 所以表达式, 如i<lim-1
等同于i<(lim-1)
。
涉及到逻辑运算符&&和||的表达式从左到右求值, 只要结果的真假已知, 那么求值就结束。
比如&&运算符中: (3<2) && (2>4), 前者3<2求值结果为: false; 那么后面的(2>4)也就不需要求值了, 因为无论如何该&&的结果始终为false了; ||同理, 略有变化, (3>2) || (2>4) 的话, 前者(3>2)求值结果为true, 那么后面的(2>4)也就不需要求值了, 因为无论如何该结果始终为true。
另外, &&运算符的优先权要高于||运算符, 两者其优先权均低于关系和相等运算符。
要提到的是, 关系或者逻辑表达式,其数值为: 1(true), 0(false)。
一元否定运算符!的作用是将一个非零运算数(operand)变为0将零运算数变为1。
参考: 《The C Programming Language》- Chapter 2.6