免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 运算符和表达式一常见运算符1算术运算符:+ - * / %2关系运算符: = = = !=【注:从左至右依次为: 大于 小于 大于等于 小于等于 等于 不等于】3逻辑运算符:| & !【注:从左至右依次为:逻辑或 逻辑与 逻辑非】4赋值运算符:5条件运算符:?:6指针运算符:* &7位运算符: | &8强制转换运算符:(类型)9分量运算符:-10下标运算符:11求字节运算符:sizeof12复合赋值运算符:+= -= *=等13自增自减运算符:+ -14逗号运算符:,二几类重要的运算符1算术运算符(1)种类:+ - * / %(2)结合性:自左向右(左结合性)(3)优先级: 10 * / %同级; 20 + -同级; 30 * / %高于+ -。(4)强调: 10 对于/: 两个数据(常量或变量)相除,只要其中一个为实型,则结果为实型; 两个整型数据相除,则结果为整型数据。 20 对于%(模余);要求两个数据必须为整型,结果为两数据相除的余数。【如: 2+5-3*4的值为-5 2/3的值为0 2.0/5的值为0.4 4%2的值为0 3%2的值为1】2自增自减运算符:(1)种类:+ -(2)结合性:自右向左(3)优先级: 10 +和-同级; 20 + -和负号运算符同级。 30 + -高于算术运算符。 【如:i+i应理解为:(i+)+i】(4)强调: 10 + 和-只能用于变量,不能由于常量; 20 +和-用于指针变量,则使指针向前或向后移动一个单位。(根据指针变量类型,在内存中移动不同单元) 30 +和-与其它运算符在表达式中同时存在时(不带括号),则按照优先级和右结合性进行运算。 40 +和-可以用于整型变量和实型变量。(5)使用: 10 i+表示i参与运算后加上1; 20 -i表示i参与运算前减去1。30 表达式中含有前缀和后缀的自增自减运算符,则计算过程如下: 对所有前缀进行增减运算; 对表达式进行运算; 对所有后缀进行增减运算。【如:#include void main( ) int i=2,j=3,k; k=(i+)+(j-)+4;printf(result:k=%d,i=%d,j=%dn,k,i,j);运行结果:result:k=9,i=3,j=2】【思考:如下程序的结果为 。#include void main( ) int i=2,j=3,k; k=(i+)+(j+)+4+(+i)+(+j);printf(result:k=%d,i=%d,j=%dn,k,i,j); 】【注:表达式中同时出现i和+i,则 10 TC系统将i和+i都同时增加1。 20 VC系统将+i中的i增加1,而变量i则不增加1。】【思考:如果int i=2,j=3,k;则 执行k=i+j-+i+-i;k的值是 。】3关系运算符(1)种类: = = = =高于= !=。(4)关系表达式的两种结果: 10 结果为真,则以1表示; 20 结果为假,则以0表示。【注:关系表达式的结果为逻辑量】4逻辑运算符:(1)种类:| & !【注:10 逻辑与&类似于乘积运算;20 逻辑或|类似于加法运算】(2)结合性:左(3)优先级:由低到高依次为:| & !(4)逻辑表达式的两种结果: 10 结果为真,则以1表示; 20 结果为假,则以0表示。(5)运算强调:非0则1,是0则0。【注:10 任何类型数据都可以作为逻辑量研究;20 处理|或者&的表达式时,一旦结果确定,则停止运算】【注: 10 0和非0是逻辑运算的依据; 20 0和1是逻辑运算的结果】5赋值运算符:(1)种类:=(2)作用:将一个表达式的值赋给一个变量。6复合赋值运算符:(1)种类:+= -= *= /= %= = &= |= =(2)优先级:同级(3)用法:E1 op= E2 E1= E1 op E2【注: 10 op为一个运算符; 20 E1为变量名;30 E2为变量或表达式; 40 首先计算E2的值,再进行复合赋值运算。【如: a+=2a=a+2 x*=a+gx=x*(a+g) c%=bc=c%b】(4)优点:简化程序,提高编程效率。(5)几类重要运算符的优先级别:由低到高依次为: 复合赋值 赋值 逻辑 关系 算术 !7逗号运算符:(1)种类:,(2)优先级:低于所有运算符(3)运算规律:从左自右依次计算所有表达式,以最后一个表达式的结果作为该语句的最终结果。【如:y=(a=b+c,a=c+d,a=d+e);结果为 a=d+e且y=d+e】7类型转换(1)说明:同一个表达式中可以进行不同类型数据的混合运算,运算时转换成同类型数据。(2)三类转换 10 自动转换 类型转换顺序 charshortunsigned short intunsignedlongfloatb; d的值是 1 。20 d=a+bc; d的值是 0 。30 d=c+b=c+a; d的值是 0 。40 d=a!=bb即为32,结果为真,所以d的值是1。20 表达式等价于(a+b)c,即为51,结果为假,所以d的值是0。30 表达式等价于(c+b)=(c+a),即为3=4,结果为假,所以d的值是0。40 表达式等价于d=(a!=bc),因为bc为假,所以bc的值是0,而a!=bc成立,所以d的值是1。(2)int a=-7,b=0 c;则10 c=!a; c的值是 0 。20 c=a&b; c的值是 0 。30 c=!b2|5&5=5; c的值是 1 。解:10 因为a=-7非零,故a的逻辑值为1,因此!a的逻辑值是0,所以c的值是0。20 因为b=0,故b的逻辑值为0,所以a&b的值是逻辑值是0,所以c的值是0。30 等价于c=(!b2)|1&(5=5),有 c=(12)|1&1,有 c=1|1&1,有 c=1|1,所以c的值是1。(3)如果某年能被4整除且不能被100整除,或者该年能被400整除,则为闰年。设某年为n,则判定其是否为闰年的表达式可表示为: n%4=0&n%100!=0|n%400=0; (4)读下列程序。#include void main( )int a,b=5,c,d=9; a=5=3; c=10=3的值为1,所以a=110=2的值是0,所有c=0b+a=5+1=6,所以b=6d+c=9+0=9,所以 d=9(5)读下列程序。#include stdio.hvoid main( )int i=2,j=3,k;j=i+;k=+i; printf(i,j,k=%d,%d,%dn,i,j,k); 则程序运行后结果为 i,j,k=4,2,4 。解:根据自增自减运算符的运算规律由j=i+;得j=2,此后i=3由k=+i;得i=4,通过赋值得k=4。所有,有i=4,j=2,k=4。(6)读下列程序。#include void main( )int i=2,j=3,k;k=i+j-+j+-i; printf(i,j,k=%d,%d,%dn,i,j,k); 程序运行结果为 i,j,k=2,2,8 。解:自增自减运算符具有自右向左结合性,且优先级别大于算术运算符,故在没有括号的具有自增自减运算符和算术运算符的表达式中,首先进行右结合考虑自增自减,再进行左结合考虑自增自减,最后考虑算术运算。k=i+j-+j+-i;等效于k=(i+)+(j-)+j+(-i);按照运算规律首先运算前缀,得到i=1;然后运算k=i+j+j+I,得k=1+3+3+1=8最后运算后缀,得到i=2,j=2(7)读下列程序。#include void main( )int a=2,b=4,c=6,x,y; y=(x=a+b,x+c); printf(x=%d,y=%dn,x,y);程序运行结果为:x=6,y=12。解: 根据逗号运算符的运算规律,得 x=2+4=6,x+c=6+6=12,于是 y=x+c=12(8)已知:a=b=c=1;且均为int型变量,执行语句+a|+b|+c;则变量a的值为 2 ;变量b的值为 1 ;变量c的值为 1 。解:根据自增运算符的优先级别高于逻辑运算符,有+a|+b|+c;等效于(+a)|(+b)|(+c);因此,首先a的值增加1,变为2,故逻辑值为1,此时表达式的结果已确定,不再进行+b和+c及逻辑运算,所以变量b和c都保持原来的初值1,所以语句执行后有:a=2;b=1;c=1。例42 选择题(1)已知char a; int b; float c; double d;执行语句c=a+b+c+d; 则变量c的数据类型是 ( )Aint BcharCfloat Ddouble解:由于语句c=a+b+c+d;右端的d为双精度型,故右端结果为双精度型,而语句左端变量为单精度型,根据赋值转换,右端的结果赋给左端c,会自动转换为单精度型, 所以,C答案正确。(2)已知:int j,i=1;执行语句j=-i+;则i和j的值分别是 ( C )A1,1 B-1,2C2,-1 D-2,2解:根据自增运算符的规则,后缀形式是i参与运算是后才加上1,所以j的值为-1,i的值为2。所以,C答案正确。(3)已知:int i=5;执行语句i+=+i;则i的值是 ( )A12 B11 C10 D13解:显然,i+=+i;等价于 i=i+(+i);由前缀+可知,i在参与运算前加上1,故运算前i=6(注意等式右边变量i的值都变为6);因此右端结果为6+6=12,最后将12重新赋给左端i,所以,A答案正确。(4)已知:int y; float x=-3;执行语句y=x%2; 则变量y的值是 ( D )A1 B-1 C0 D语句有误解:%两边的类型必须为整型,而x为单精度实型,故不能取模余,因此语句有误,所以,D答案正确。(5)已知:int x=3,y=5,z;执行语句z=x=xy; 则变量z的值是 ( A )A0 B1 C3 D5解:这是一个赋值表达式,从右到左依次运算并赋值,因为xy为假,所以值为0,故x被赋值为0,z也被赋值为0,所以,A答案正确。(6)以下选项中,与k=n+完全等价的表达式是( A )Ak=n,n=n+1 Bn=n+1,k=n Ck=+n Dk+=n+1解:由后缀+可知,变量n赋给k后, n自增1。所以A答案正确。(7)已知:int x=6;执行语句x+=x-=x*x; 则变量x的值是 ( B )A36 B-60C60 D-24解:根据复合赋值运算规律,有x+=x-=x*x; x=x+(x-=x*x); x=x+(x=x-x*x);因此,得X=-30+(-30)=-60所以,B答案正确。(8)若定义int x;要将x强制转换成双精度类型,则应该执行 ( A )A(double)x Bx(double) Cdouble(x) D(x)double解: 强制转换的格式为:(类型名)表达式 所以,A答案正确。(9)以下程序的运行结果是: ( C )#include void main( )int k=2,i=2,m;m=(k+=i*=k);printf(%d,%dn,m,i) ;A8,6 B8,3 C6,4 D7,4(10)设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y;的功能是 ( D )A把x和y按从大到小排列。B把x和y按从小到大排列。C无确定结果。 D交换x和y中的值。(11)以下程序的运行结果是 ( C )#include void main( )int a=4,m=0,n=0,k;k=(m=a=3)|(n=a=4);printf(%d,%dn,m,n);A0,0 B0,1 C1,0 D1,1【思考:#include void main()int m=5,n=5,k;k=(m=0)&(n=0);printf(%d,%dn,m,n);输出结果为: 】(12)以下程序的运行结果是 ( D )#include void main()int y=3,x=3,z=1;printf(%d %dn,(+x,y+),z+2);A3 4 B4 2 C4 3 D3 3(13)下列运算符运算级别最高的是 ( D )A& B+= C= D!(14)在C语言中,要求运算数是整型的运算符是( A )A% B/ C!= D*(15)在C语言中表达式(2/5+3/5)的值是( A )A0 A0.4 C0.6 D1(16)设int a=2, b=3, c; c=(a*=b); 则执行上述语句后c的值是 ( D )A2 B3 C5 D6(17)int a, b, c=5; a=c+; b=c; 执行上述语句后,则b的值为 ( C )A4 B5 C6 D7(18)设有定义:double x=4.9;则表达式(int)(x)%3/4的值是 ( D )A4.9 B0.5 C0.25 D0(19)设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是: ( C )Ax=x*100+0.5/100.0 Bx=(x*100+0.5)/100.0Cx=(int)(x*100+0.5)/100.0 Dx=(x/100+0.5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 看护锅炉劳务合同范本
- 烟囱设备销售合同范本
- 监理劳务合同范本样本
- 物业泳池转租合同范本
- 眉山屋顶换瓦合同范本
- 监控系统维护合同范本
- 辩护聘请律师合同范本
- 编制项目委托合同范本
- 直播软件销售合同范本
- 第5课《建立良好的公共秩序》第1课时(教学设计)-部编版道德与法治五年级下册
- GB/T 42044-2022空间站应用有效载荷通用设计要求
- GB/T 36198-2018土壤质量土壤气体采样指南
- GB/T 35230-2017地面气象观测规范蒸发
- GB/T 12970.4-2009电工软铜绞线第4部分:铜电刷线
- GB/T 11361-2008同步带传动梯形齿带轮
- 公益事业捐赠预评估表
- 江苏开放大学组织行为学期末复习题
- 监狱消防安全知识讲座课件
- 科学社会学的研究对象
- 去极端化学习材料课件
- 中国文化概论(第三版)全套课件
评论
0/150
提交评论