关系运算符(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