4.1 关系运算符、关系表达式与逻辑运算符、逻辑表达式

4.1.1 关系运算符和关系表达式

1.关系运算符

所谓关系运算,又称比较运算,将两个值进行比较,判断比较结果是否符合给定条件。表2.5给出了C语言运算符分类。目前已经讲解过的运算符有算术运算符、赋值运算符、逗号运算符、求占字节数运算符(sizeof)、强制类型转换运算符。表2.6给出了不同种类运算符的优先级。

现在看一看关系运算符这个子分类,C语言提供了6种关系运算符,将这6种关系运算符从表2.6中提取出来以便看得更清晰,如表4.1所示。

表4.1 6种关系运算符含义及优先级

对于关系运算符的优先级问题,有几点内容需要强调:

(1)表4.1中,前四个关系运算符优先级相同,后两个关系运算符优先级也相同,前四个关系运算符的优先级高于后两个的。

(2)关系运算符的优先级低于算术运算符。

图4.1 赋值、关系、算术运算符之间的优先级

(3)关系运算符的优先级高于赋值运算符。

(4)关系运算符中的等于“==”是两个等号,一定不能写成一个等号“=”,否则就变成赋值运算符了。

因为在编写程序的过程中,经常需要用到算术运算符、关系运算符、赋值运算符之间的混合运算,所以,再把这三个运算符之间的优先级明确一下,如图4.1所示。

既然强调了运算符的优先级问题,看看如下这些表达式的范例:

2.关系表达式

用关系运算符将两个表达式连接起来的式子就叫关系表达式。如下两个表达式都是关系表达式:

关系表达式的值是一个逻辑值,也就是“真”或者“假”。例如,5==3的值为“假”(再次提醒:==千万不能写成=),5>=0的值为“真”。

在C语言中,“真”用true表示,也可以用1表示;“假”用false表示,也可以用0表示,可以认为true就等于1,false就等于0。所以,可以认为,关系表达式的结果值是0或者1,也可以认为关系表达式的结果值是true或者false。看看如下范例:

再看一例:

再看一看这个分析:如果a值为3,b值为2,c值为1,那么: