一、关系运算符
1、关系运算符的定义
关系运算符:指对两个同类型的数据按它们值的大小进行比较的运算,判断它们是否符合给定条件。
2、关系运算符运算的结果
关系运算符运算结果如下所示。

3、关系运算符优先级与结合方向
表3-1 C语言中的关系运算符
|
|---|
| 运算符 | 含义 | 优先级 | 结合方向 |
| < | 小于 | 6 | 从左往右 |
| <= | 小于或等于 |
| > | 大于 |
| >= | 大于或等于 |
| == | 等于 | 7 |
| != | 不等于 |
关系运算符优先级说明如下:
① 关系运算符被分为两组不同的优先级,“==”、“!=”的优先级低于“<”、“<=”、“>”、“>=”。
② 关系运算符的优先级低于算术运算符。
③ 关系运算符的优先级高于赋值运算符。看下面的例子。
a>b+3 等价于 a>(b+3)
a=b>3 等价于 a=(b>3)
a != b >3 等价于 a != ( b >3 )
当相同优先级的关系运算符同时出现时,从左向右进行运算。也就是说,结合性是从左向右。例如:
a != b == c 等价于 ( a !=b ) == c
用关系运算符连接两个表达式组成的式子称为关系表达式下面都是合法的关系表达式:
① a>b ② (a+b)<=(b+c) ③ 'a'<'b' ④ 1==1 ⑤ 1 == 0
在C语言中,当表达式的值为真时,其值为1;而当表达式的值为假时,其值为0.1熟练达式中,除了1表示“真”以外,所有非0值也都表示“真”,只有0表示“假”,如:
x=(3>2); x的值为1
x=(3<2); x的值为0
二、关系表达式
1、关系表达式的定义
关系表达式是指用关系运算符将两个数值或数值表达式连接起来的式子。
2、关系表达式的值
关系表达式的值是一个逻辑值,即“真”或“假”。在C语言的逻辑运算中,以“1”代表“真”,以“0”代表“假”
注意:在C语言中非0表示真,0表示假。只要进行关系运算后,结果只有0或1。
三、逻辑表达式
逻辑表达式是指用逻辑运算符连接若干个表达式组成的式子。
1、逻辑运算符的含义
&&(逻辑与) || (逻辑或) !(逻辑非)
说明:
① 逻辑运算的值应该是逻辑量“真”或“假”
② 编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”
③ 但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”
④ 注意:将一个非零的数值认作为“真”
⑤ 逻辑运算真值表
| 逻辑运算真值表 |
|---|
| a | b | !a | !b | a && b | a || b |
| 非0 | 非0 | 0 | 0 | 1 | 1 |
| 非0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 非0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 0 | 0 |
说明:
● a && b 若a,b均为真,则“a && b”值为真,否则为假。
● a || B 若a、b均为假,则“a || b”值为假,否则为真
● !a 若a为真,则“a”值为假,否则为真
● 与运算只要有一个为0,则结果为0,全1才为1。
● 或运算只要有一个为1,则结果为1,全0才为0。
● 与运算前一操作数为0,则后一个不算
● 或运算前一操作数为1,则后一个不算
2、逻辑运算符的优先级与结合方向
如表3-2所示。
表3-2 C语言中的逻辑运算符
|
|---|
| 运算符 | 含义 | 优先级 | 结合方向 |
| ! | 逻辑非 | 2 | 右 |
| && | 逻辑与 | 11 | 左 |
| || | 逻辑或 | 12 | 左 |
说明:
① 逻辑运算符中,“&&”和“”是双目运算符要求有两个运算对象:“1”是单目运算符。
② 逻辑运算符的优先次序。
● ! → && → || (!为三者中最高)
③ 与其他运算符的优先次序,如下图所示。

3、逻辑表达式优先级使用案例
例1 x > y && m > n 等价于 ( x >y ) && ( m > n )
例2 a != b || x == y 等价于 (a != b) || (x == y )
例3 ! x || x > y 等价于 ( ! x ) || ( x > y )
4、逻辑表达式运算案例
例1 ( 3 < 2 ) && ( 7 > 5 ) 值为 0 只有“&&”右边的子表达式为真
例2 ( 3 < 2 ) || ( 7 > 5 ) 值为 1 只要求有一个子表达式为真
例3 !( 3 < 2 ) 值为1 子表达式为假
逻辑表达式的值为1或0。因为任何类型的表达式都有真假,所以逻辑运算符可以连接任何类型的数据。如果逻辑表达式太复杂,则需要注意比较运算符优先级的大小。看下面的例子。
x > 7 && x + y != 20 等价于 ( x>7 ) && ( ( x+y ) != 20 )
3 + 2 && 5 > 40 等价于 ( 3 + 2 ) && ( 5 > 4 ) || ( !0 )
熟练掌握关系运算和逻辑运算是运用分支结构编程的关键。
四、拓展资料
案例1 判别某一年是否为润年,用逻辑表达式表示
问题分析:
如果是润年,则为1(真),否则为0(假)
是否为闰年应符合下面二者之一:
① 能被4整除,但不能被100整除,如2008
② 能被400整除,如2000
“应符合下面二者之一”这句话表明两个条件是或的关系,不是与的关系。“能被4整除,但不能被100整除”这句话表明是与的关系,不是或的关系。
逻辑表达式如下:
(year % 4 == 0 && year 100 !=0) || year % 400 == 0
分析验证:
① 当年份(year)为 2008、2020、2000年时,计算结果为真(1)。
② 当年份(year)为 2002、2100、2010年时,计算结果为假(0)
通过上面两组数据分析,得出判别“某年是否为润年”的逻辑表达式是正确的。
案例2 已知三边a,b,c均大于0,判断三边是否构成三角形,用逻辑表达式表示。
问题分析:
如果是任意两边的和大于第三边,则为1(真),否则为0(假)
判断三边是否构成三角形的定理是:任意两边的和大于第三边。三边a,b,c的所有组合有三种情况,分别为: ① a+b>c,② a+c>b,③ b+c>a,这三种情况任何一种情况都必须成立,则可以构成三角形,应是与的关系,不是或的关系。
逻辑表达式如下:
a+b>c && a+c>b && b+c>a
分析验证:
① 当 a=3,b=4,c=5 或 a=4,b=3,c=5 或 a=5,b=4,c=3时,计算结果为真(1), 表明可以构成三角形。
② 当 a=3,b=1,c=1 或 a=1,b=3,c=1 或 a=1,b=1,c=3时,计算结果为假(0),表明不可以构成三角形。
写逻辑表达式
例1:判断整数x是否为奇数
如果是奇数,则为真,否则为假
x % 2==1
或 x % 2
或 x/2*2!=x
多用几个具体的数去算一下
如:3,5,11,4,10去算一下
例2:判断整数x是否为偶数
如果是偶数,则为真,否则为假
x % 2==0
或 !(x % 2)
或 x/2*2==x
多用几个具体的数去算一下
如:3,5,11,4,10去算一下
例3:判断整数x是否能被3整除
如果能被3整除,则为真,否则为假
x % 3==0
或 !(x % 3)
或 x/3*3==x
多用几个具体的数去算一下
如:3,5,11,4,10去算一下
例4:判断整数x是否既能被3整除,又能被5整除
如果能,则为真,否则为假
x % 5==0 && x % 3==0
或 !(x % 3)
或 x/3*3==x
多用几个具体的数去算一下
如:3,5,11,15,10去算一下
设a=6,b=4,写出下列运算表达式的结果。
a>=5 && b<=3 1 && 0 0
设a=2,b=4,写出下列运算表达式的结果。
a>=5 && b<=3
0 && b<=3 与运算前一操作数为0,则后一个不算
设a=2,b=4,写出下列运算表达式的结果。
a>=5 && (b+=2)
0 && (b+=2)
与运算前一操作数为0,则后一个不算
设a=5,b=4,写出下列运算表达式的结果。
a>=5 || (b+=2)
0 || (b+=2)
或运算前一操作数为1,则后一个不算
设a=5,b=4,写出下列运算表达式的结果。
a>5 || (b+=2)
0 || (b+=2)
或运算前一操作数为1,则后一个不算