c语言关系运算符和位运算符

上传人:suns****4568 文档编号:92819408 上传时间:2019-07-13 格式:PPT 页数:42 大小:230.50KB
返回 下载 相关 举报
c语言关系运算符和位运算符_第1页
第1页 / 共42页
c语言关系运算符和位运算符_第2页
第2页 / 共42页
c语言关系运算符和位运算符_第3页
第3页 / 共42页
c语言关系运算符和位运算符_第4页
第4页 / 共42页
c语言关系运算符和位运算符_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《c语言关系运算符和位运算符》由会员分享,可在线阅读,更多相关《c语言关系运算符和位运算符(42页珍藏版)》请在金锄头文库上搜索。

1、第3章 关系运算符和位运算符,本节主要内容介绍,3.5.5 关系运算符和关系表达式 3.5.6 逻辑运算符和逻辑表达式 3.5.7 条件运算符和条件表达式 3.5.9 位运算符 3.5.10 求字节运算符,3.5.5关系运算符和关系表达式,1.关系运算符及其优先次序 (大于) = (大于或等于) = (等于) != (不等于),说明: 关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符,关系运算符和关系表达式,如: ca+b ab!=c a=bc,建议:使用( )能使关系更清晰!, c(a+b),(ab)!=c, a=(bc), a=(bc),2.关系表达式 用关系运算符将两个

2、表达式(可以是算术表达式或 关系表达式,逻辑表达式,赋值表达式,字符表达式) 接起来的式子,称关系表达式 例:ab,a+bb+c,(a=3)(b=5),ab)(bb”的值为“真”,表达式的值为1。 a=3,b=2,c=1 则关系表达式“(ab)=c”的值为1,C语言中没有专用的逻辑值,1代表真,0代表假,关系运算符和关系表达式,关系运算符和关系表达式,例 int i=1, j=7,a; a=i+(j%4!=0); 则 a的值为,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc (a=5)b)(bc),例 a 0 结果为 A 100 结果为,例 若a=0;

3、b=0.5; x=0.3; 则 a=x=b的值为,/表达式值1,/表达式值1,/表达式值0,/d的值为1,/f的值为0,/表达式值0,/表达式值1,/表达式值1,2,1,0,0,关系表达式 使用注意: 尽量使用( )以使关系清晰。 如: (ab)=(b+c) 避免类似错误: 如:要表示xa,b,不可写为: a=a)&(x=b) 应避免对实数作相等或不等的判断。 如:1.0/3.0*3.0=1.0 结果为 0. 可改写为:fabs(1.0/3.0*3.0-1.0)1e-6 注意区分“=”与“=”,常把“=”误写为“=”。 如:a=1与a=1含义不同。,关系运算符和关系表达式,3.5.6 逻辑运算

4、符和逻辑表达式,1.逻辑运算符及其优先次序 (1)& (逻辑与) 相当于其他语言中的AND (2)| (逻辑或) 相当于其他语言中的OR (3)! (逻辑非) 相当于其他语言中的NOT 例:a&b 若a,b为真,则a&b为真。 a|b 若a,b之一为真,则a|b为真。 !a 若a为真,则!a为假。,优先次序: ! 算术运算符 关系运算符 & | 赋值=,逻辑运算符和逻辑表达式,在C语言中: 0被看成是“假”, “假”就是0 非零值被看成是“真”, “真”就是1 如:a=-3.5&53 看成 “真” & “真” 值为1 注意:数学上关系式 0 x 100 要写成:0=x & x=100,逻辑运算

5、符和逻辑表达式,如:ab&xy a=b|x=y !a|ab,如:(ab)&(xy) (a=b)|(x=y) (!a)|(ab),建议: 使用( )能使关系更清晰!,2.逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。 逻辑表达式的值应该是一个逻辑量“真”或“假”。,例:设a=4,b=5: !a的值为0 a&b的值为1 a|b的值为1 !a|b的值为1 4&0|2的值为1,任何非零的数值被认作“真”,逻辑运算符和逻辑表达式,例:53&84-!0 自左向右运算,1&0逻辑值为0,83逻辑值为0,4-1值为3,!0逻辑值为1,53逻辑值为1,表达式值为0,逻辑运算符和逻辑

6、表达式,在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时, 才需要判断c的值。 (2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才 判断b。a和b都为假才判断c,例:(m=ab)&(n=cd) 当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值 为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而 仍保持原值1。,逻辑运算符和逻辑表达式,逻辑运算符和逻辑表达式,例3.12 逻辑表达式的不完全计算 void main() int a,b,c,d; a=0; b=1; c=a+

7、 ,a=2,b=1,c=0,d=1,逻辑运算符和逻辑表达式,逻辑运算符的应用: (1) 表示成绩(grade) 在90以上(含)和60分以下的情况: grade=90 | grade0 能被400整除 (year%4=0&year%100!=0) | (year%400=0) (4)表示 x 是数字字符的情况 x=0 & x=48 & x=57),课堂练习:,1、已有定义语句,int x=3,y=4,z=5;则值为0的表达式是( ) A)xy+ B)x=y-z D)y%z=y-z 2、x为奇数时值为“真”,x为偶数时值为“假”,表达式是( ) A)!(x%2=1) B)x%2=0 C)x%2

8、D)!(x%2) 3、已有定义语句:int m=0,n=1;执行表达式(m=59)后,n的值是( ) A)1 B)2 C)3 D)4 4、已有定义语句:int m=0,n=3;执行表达式(m=53)|(n=79)后,n的值是( ) A)1 B)2 C)3 D)4,课堂练习,5能正确表示数学关系式 100s300的表达式为( )。 (A) (s=100) 则表达式 !a|b 的值为( )。 (A) 0 (B) 1 (C) 2 (D) 3 7设整型变量x为7,使整型变量y不为2的表达式是( )。 (A) y=x%3 (B) y = x/3 (C) y =(+x)/3 (D) y=8-(-x),3.

9、5.7条件运算符和条件表达式,C语言提供了一个简单的条件赋值语句或条件表达式。 一般形式 表达式1?表达式2: 表达式3 功能: 先判表达式1, 若非0,则值为表达式2的值,否则为表达式3的值。 条件运算符的优先级高于赋值运算符,但低于关系运算符和逻辑运算符。例如: a=1; b=2; c = ab ? 3 : 4;,main() int i=3, j=5, k; k=ij ? i+ : j+; printf(“i=%d, j=%d, k=%dn“, i, j, k); ,i=4,j=5,k=3,条件运算符和条件表达式,条件表达式 说明: 条件表达式语句功能相当于一种条件语句,但不等价于一般i

10、f语句。 表达式2、表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。 如:ab?(a=100):(b=100) ab?printf(“%d“,a):printf(“%d“,b) 表达式2、表达式3的类型可以不同,此时条件表达式值取二者中较高的类型。 如: xy?1:1.5 /若xy, 则值为1.0; 若xy, 则值为1.5。,条件运算符和条件表达式,例3.13 输入两个数,输出其中较大的数 #include “stdio.h“ main() float a,b,max; printf(“please input two real numbers:“); scanf(“%f%f“,

11、 ,条件运算符和条件表达式,例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 程序: #include void main() char ch; scanf(“%c“, 运行结果: 输入:A 输出:a,应用运算符和表达式应注意 运算符功能 运算符与运算对象的关系 要求运算对象的个数 要求运算对象的类型 运算符的优先级 运算的结合方向 运算结果的类型 混合运算中的类型转换,条件运算符和条件表达式,3.5.9位运算符,概念 位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。 例如:将一个存储单元中的各二进制位左移或

12、右移一位,两个数按位相加等。 语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。,位运算符,语言提供的位运算符有:,运算符 含义 运算符 含义 按位与 取反 | 按位或 右移,(1)位运算符中除以外,均为二目(元)运算符,即要求两侧各有一个运算量。 (2)运算量只能是整型或字符型的数据,不能为实型数据。,说明:,1、“按位与”运算符(),按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为,则该位的结果值为;否则为。即: , 例:并不等于,应该是按位与运算:,注意:如果参加&运算的是负数(如-3&-5),则要以补码形式表示为二进制数,

13、然后再按位进行“与”运算。,3&5的值得,00000011(3) & 00000101(5) 00000001(1),“按位与”运算符,按位与运算有两个特点:和二进制位数0相与则该位被清零;和二进制位数相与则该位保留原值不变。利用这两个特点,可以指定一个数的某一位(或某几位)置0,也可以检验一个数的某一位(或某几位)是否是。 例如:a=a只保留a的右端两位二进制位数。 又如:若a & 4 值为4,则变量a的右端第3位为。 按位与运算符“&”和逻辑与运算符“&”不同,对于逻辑与运算符“&”,只要两边运算数为非0,运算结果为 1。例如 41 & 165 的值是 1。,2、“按位或”运算符(|),两

14、个相应的二进制位中只要有一个为,该位的结果值为。 即 |,|,|,| 例: 060|017,将八进制数60与八进制数17进行按位或运算。,“按位或”运算符,0000 0000 0010 1001 (十进制数41) 0000 0000 1010 0101 (十进制数165) 0000 0000 1010 1101 (十进制数173) 利用按位或运算的特点,可以指定一个数的某一位(或某几位)置1,其它位保留原值不变。 例如:a=a|3;把a的右端两位二进制位数置1,其它位保留原值不变。 a=a0xff; 把a的低字节全置1,高字节保持原样。 a=a0xff00; 把a的高字节全置1,低字节保持原样

15、。,3、“异或”运算符(),异或运算符也称XOR运算符。它的规则是: 若参加运算的两个二进制位同号则结果为(假) 异号则结果为(真) 即:00=0,01=1,10=1, 11=0,例:,即:071052=023 (八进制数),“异或”运算符,例如:int a=41165 ;则a的值为140,运算过程用二进制表示如下: 0000 0000 0010 1001 (十进制数41) 0000 0000 1010 0101 (十进制数165) 0000 0000 1000 1100 (十进制数140) 按位异或运算可以把一个数的二进制位的某一位 (或某几位) 求反 (0变1,1变0)。例如:a=a3;将变量 a 的最右端的二位求反。,4、“取反”运算符(),是一个单目(元)运算符,用来对一个二进制数按位取反,即将变,将变。 例如,是对八进制数(即二进制数)按位求反。,“取反”运算符,例如:int i=199;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号