C语言中有一共有如下6中关系运算符: < 小于 <= 小于或等于 > 大于 >= 大于或等于 == 两边相等 != 两边不相等
关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。他们比数学运算优先级要低。
关系运算符所在的表达式称为关系表达式,它的运算结果是一个逻辑结果,真或者假。比如:
5 > 3 结果为真 5 >= 5 结果为真 5 < 3 为假 5 <= 5 为真 3 + 2 > 4 为真
C语言中的逻辑运算符一共有三种:
&& 逻辑与(参与运算的两个量都为真时,结果才为真,否则为假) || 逻辑或(参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果才为假) ! 逻辑非(逻辑取反,非真结果为假,非假结果为真)
与运算符&&和或运算符||均为双目运算符。具有左结合性。非运算符!为单目运算符,具有右结合性。其中与运算和或运算优先级一样,但是低于非运算。C语言规定,数字运算时,0为假,而非0为真。
注意,逻辑运算&&中,只要前面的运算后假,后面的运算就不会在计算了。
比如有下面的代码段: int a = 1, b = 2; if ((a > b) && GetVal()) { ... }
这个代码中,由于逻辑与&&前面的(a > b)这个已经不满足了,程序就不会再去执行后面的GetVal函数了,这一点尤其注意。 同样在或运算||中,如果运算符左边的已经为真,则后面的部分也不会在计算,还是上面这个a和b。
if ((a < b) || GetVal()) { ... }
这里的GetVal函数也不会执行,因为前面以及得出结论,整个结果一定是真,后面就不在计算。