版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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) a=0; b=1; c=a+ ,a=2,b=1,c=0,d=1,逻辑运算符和逻辑表达式,逻辑运算符的应用: (1) 表示成绩(grade) 在90以上(含)和60分以下的情况: grade=90 | grade0 能被400整除 (year%4=0则值为0的表达式是( ) A)xy
4、+ B)x=y-z D)y%z=y-z 2、x为奇数时值为“真”,x为偶数时值为“假”,表达式是( ) A)!(x%2=1) B)x%2=0 C)x%2 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设整
5、型变量x为7,使整型变量y不为2的表达式是( )。 (A) y=x%3 (B) y = x/3 (C) y =(+x)/3 (D) y=8-(-x),3.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=%d
6、n, i, j, k); ,i=4,j=5,k=3,条件运算符和条件表达式,条件表达式 说明: 条件表达式语句功能相当于一种条件语句,但不等价于一般if语句。 表达式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() f
7、loat a,b,max; printf(please input two real numbers:); scanf(%f%f, ,条件运算符和条件表达式,例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 程序: #include void main() char ch; scanf(%c, 运行结果: 输入:A 输出:a,应用运算符和表达式应注意 运算符功能 运算符与运算对象的关系 要求运算对象的个数 要求运算对象的类型 运算符的优先级 运算的结合方向 运算结果的类型 混合运算中的类型转换,条件运算符和条件表达式,3.5.9位运算
8、符,概念 位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。 例如:将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。 语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。,位运算符,语言提供的位运算符有:,运算符 含义 运算符 含义 按位与 取反 | 按位或 右移,(1)位运算符中除以外,均为二目(元)运算符,即要求两侧各有一个运算量。 (2)运算量只能是整型或字符型的数据,不能为实型数据。,说明:,1、“按位与”运算符(),按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为,则该位的结果值为;否
9、则为。即: , 例:并不等于,应该是按位与运算:,注意:如果参加和二进制位数相与则该位保留原值不变。利用这两个特点,可以指定一个数的某一位(或某几位)置0,也可以检验一个数的某一位(或某几位)是否是。 例如:a=a只保留a的右端两位二进制位数。 又如:若a 把a的低字节全置1,高字节保持原样。 a=a0 xff00;把a的高字节全置1,低字节保持原样。,3、“异或”运算符(),异或运算符也称XOR运算符。它的规则是: 若参加运算的两个二进制位同号则结果为(假) 异号则结果为(真) 即:00=0,01=1,10=1, 11=0,例:,即:071052=023 (八进制数),“异或”运算符,例如:
10、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; 则: i值为-200,这是因为: 十
11、进199写成二进制: 0000 0000 1100 0111 把它按位取反 1111 1111 0011 1000,这个数是整型十进制数 -200在内存的补码表示。 1111111 0011 0111 000000011001000,5、左移运算符(),左移运算符是用来将一个数的各二进制位全部左移若干位。 例如:a=2 将的二进制数左移位,右补。 若,即二进制数, 左移位得,(十进制数),高位左移后溢出,舍弃。,char a=5, b; b=a3; a的二进制值为 0000 0101 ,执行语句b=a3; 之后b的值为 0010 1000 (十进制数40=5*2*2*2),运算后a的值并没有改
12、变仍为5)。 每左移1位,相当于乘以 2。 若高位移出的部分包含有二进制位数 1,则不能用左移代替乘以 2。,6、右移运算符(),右移运算符是a2表示将a的各二进制位右移2位,移到右端的低位被舍弃,右移时,对于正整数和无符号整数,高位(左端)补0; 对于负数,高位(左端)补1(补码表示法最高位1表示负数)。例如: char a=41, b; b=a3; 用二进制来表示, a的值为 0010 1001 (十进制数41) 执行语句b=a3;之后b 的值为 0000 0101 (十进制数5=41/2/2/2,注意是整数除),运算后a的值并没有改变仍为41)。右移时,每右移1位,相当于除以 2(整数除
13、)。,7. 位运算赋值运算符 它们是: =, =2相当于a=a2, b|=c 相当于b=b|c 8. 位运算优先关系 例如:语句 a=10 执行后a的值为8。“”的优先级高于“ float f; printf(size of 5.0=%dn,sizeof 5.0); printf(float=%dn,sizeof(f); printf(int=%dn,sizeof(int); printf(char=%dn,sizeof(ch); printf(size of c=%dn,sizeof(c); ,运行情况如下: size of 5.0=8 float=4 int =2 char=1 size
14、of c=2,课 堂 练 习,1int x, a; 则语句 x=(a=4, a*2); 运行后,x、a的值依次为_。 2若已定义 int x=3, y=10, z; 语句 z=x=y; 运行后z的值为_ 。 3若定义 int a=-5, b= -8, c=-12; 则表达式 a=b|bc 的值为( )。 4int a, b; 则表达式 (a=2, b=5, a*2, + b, a+b) 的值是_。 5int m=5, n=3; 则表达式 (m+1, n+1, (-m)+(n-) 的值是_。,课 堂 练 习,6若有定义:int a,b; double x,则以下不符合C语言语法的表达式是( )。
15、 (A) x%(-3) (B) a+=-2 (C) a=b=2 (D) x=a+b 7若有定义:int b=7; float a=2.5, c=4.7; 则表达式a+(b/2*(int)(a+c)/2)%4 的值是( )。 (A) 2.5 (B) 3.5 (C) 4.5 (D) 5.58 8已定义 char c = A ; 则正确的赋值表达式是( )。 (A) c=028 (B) c=(c+)%4 (C) c+1=66 (D) c+=127-,课 堂 练 习,9定义:int x=4,y=2,z=0; 则表达式 (x-y=y)| (y=z)的值是( )。 (A) 1 (B) 0 (C) 2 (D) 4 10下面叙述正确的是( )。 (A) 强制类型转换运算的优先级高于算术运算 (B) 若a和b是整型变量, (a+b)+是合法的 (C) A* B 是不合法的 (D) A+ B是合法的 11若a为奇数时,表达式为真, a为偶数时, 表达式假。则不能满足要求的表达式是( )。 (A) a%2=1 (B) !(a%2=0) (C) !(a%2) (D) a%2,课 堂 练 习,12判定逻辑值为“真的最准确叙述是( )。 (A) 1 (B) 大于0的数 (C) 非0的整数 (D) 非0的数 13下面叙述中,错误的是( )。 (A) 算术运算对象不包含函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国移动应用开发行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国数字货币交易平台市场现状监管政策投资评估规划分析研究报告
- 2026中国新能源汽车行业市场发展前景供需分析及投资规划评估报告
- 2026中国文化古籍修复行业市场供需分析及投资评估规划分析研究报告
- 2026中国文化产业数字娱乐市场供需现状及投资评估报告
- 2026中国智能电梯控制系统行业市场竞争分析投资评估规划发展研究报告
- 2026中国无人零售终端铺设密度与运营效率评估分析报告
- 2026农产品品牌农庄模式分析销售增长投资评估发展策论
- 2026中国食品销售行业市场供需分析及投资评估规划分析研究报告
- 2026 水利工程设施管护事业单位招聘考试参考题库 含答案
- 重庆市“五方面人员”选拔考试题型及答案(完整版)
- 2026年全国注册测绘师之测绘管理与法律法规考试高频考点卷(附答案)
- 2026江苏南通市海门区招聘区镇(街道)专职安全巡查员第二批49人考试参考题库及答案详解
- 2025-2026学年门头设计教学课程
- 2026年度驻马店市消防救援支队招聘消防文员35名笔试备考题库及答案详解
- 北京四中2026高一数学分班考试真题含答案
- 2026版《煤矿安全规程》机电运输章节变化深度解读与实施指南
- 2026年中原银行人员招聘笔试参考试题及答案详解
- 四川省水利工程设计概(估)算编制规定2025
- 项目管理及监理一体化服务合同模板
- 特种门窗安装施工工艺流程
评论
0/150
提交评论