计算机二级第2章C语言的语法基础.ppt

上传人:wuy****n92 文档编号:80498617 上传时间:2023-03-23 格式:PPT 页数:24 大小:213.50KB
返回 下载 相关 举报
计算机二级第2章C语言的语法基础.ppt_第1页
第1页 / 共24页
计算机二级第2章C语言的语法基础.ppt_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《计算机二级第2章C语言的语法基础.ppt》由会员分享,可在线阅读,更多相关《计算机二级第2章C语言的语法基础.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第2章 C语言的语法基础2.3 运算符与表达式运算符与表达式运算符与表达式算术运算算术运算关系、逻辑和条件运算关系、逻辑和条件运算位运算位运算赋值运算赋值运算类型转换类型转换逗号运算逗号运算长度运算长度运算算术运算符5种算术运算符号种算术运算符号:加法:加法5+6;正号;正号+12;:减法;负号:减法;负号-3.1*:乘法:乘法10*3/:除法:除法8/2%:求余:求余35%6算术表达式算术表达式由算术运算符把运算对象连接起来,构成合法的式子,由算术运算符把运算对象连接起来,构成合法的式子,运算对象包括:运算对象包括:常量常量、变量变量和和函数函数。算术表达式的值。算术表达式的值为为整数或实数

2、整数或实数算术运算符的优先顺序算术运算符的优先顺序优先级从高到低分别为优先级从高到低分别为()圆括号圆括号+、-正负号,正负号,+、-增增1、减、减1*、/、%乘、除、求余乘、除、求余+、-加、减加、减说明说明关于关于“%”运算:参加运算的对象运算:参加运算的对象必须为整数必须为整数,计算结果为两数相,计算结果为两数相除所得的余数,大部分情况下,余数的符号与左侧的运算对象的除所得的余数,大部分情况下,余数的符号与左侧的运算对象的符号相同,如符号相同,如35%6=5,-35%6=-5。关于关于“/”运算:运算:整数除整数除:两个整数相除后值等于商的整数部分,如:两个整数相除后值等于商的整数部分,

3、如1/20实数除实数除:两个相除的数中至少有一个是实数,相除后值等于商:两个相除的数中至少有一个是实数,相除后值等于商本身,如本身,如1.0/2=0.5。不同类型混合运算:整型、字符型和实型数据可以混合运不同类型混合运算:整型、字符型和实型数据可以混合运算,在运算的时候需要进行类型转换。算,在运算的时候需要进行类型转换。必须转换:必须转换:floatdouble;char,shortint不同类型数据混合运算的转换规则不同类型数据混合运算的转换规则关于增关于增1、减、减1运算:运算:+,-运算对象必须为变量,如运算对象必须为变量,如3+是错误的。是错误的。既可作为前缀运算符也可以作为后缀运算符

4、,以既可作为前缀运算符也可以作为后缀运算符,以+为例:为例:区别:区别:i=1;j=+i;1i,i+1i(i=2),),ij(j=2)i=1;j=i+;1i,ij(j=1),),i+1i(i=2)相同:相同:只进行自增、自减运算,没有使用运算对象的只进行自增、自减运算,没有使用运算对象的值,如值,如i+;和和+i;是一样的。是一样的。+,-,+,-(正负号正负号)的优先级别一样,结合方向都是的优先级别一样,结合方向都是从右到左从右到左,如:如:i=1;j=-i+;1i,j=-i(j=-1),i+1i,(i=2),即:),即:j=-(i+);而不是而不是j=(-i)+;避免在一个表达式中多次使用

5、避免在一个表达式中多次使用+和和-运算符运算符else printf(%dn%dn%dn,a,a-,a);验证以下程序运行时,若从键盘输入5,则输出结果是()。(等级考等级考试试)main()int a;scanf(%d,&a);if(a+5)printf(%dn,a+);else printf(%dn,a-);(a)7 (b)4 (c)5 (d)6分析:a=5y=a+;y=5,a=6执行else语句令z=a-z=6,a=5main()int a;scanf(%d,&a);if(a+5)printf(%dn,a);else printf(%dn,a);printf(%dn,a-);printf

6、(%dn,a);验证答案5,6,6关系、逻辑、条件运算符关系运算关系运算两个数据进行比较,判定两个数据是否符合给定的关系两个数据进行比较,判定两个数据是否符合给定的关系六种关系运算符:六种关系运算符:、=、b,a+bc-d,(a=3)=b,(ab)=(bc)关系表达式的值关系表达式的值逻辑值(逻辑值(“真真”与与“假假”)语言没有逻辑型数据,所以用非零值表示语言没有逻辑型数据,所以用非零值表示“逻逻辑真辑真”,用整数,用整数“”表示表示“逻辑假逻辑假”。关系表达式的值只能为关系表达式的值只能为1或或0,1为真,为真,0为假。为假。例如,假设例如,假设num1=3,num2=4,num3=5,求

7、:,求:1.num1num2(0)2.(num1num2)!=num3(1)3.num1num2num3(1)4.(num1num2)+num3(6)数学表达式的数学表达式的3a=0)&(x10)的值为的值为“真真”,(x5)的值为的值为“假假”。优先级:优先级:从高到低:从高到低:!&|从高到低:!从高到低:!算术运算算术运算 关系运算关系运算&|赋值运赋值运算算逻辑表达式逻辑表达式逻辑表达式的概念逻辑表达式的概念用逻辑运算符将用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的个或多个表达式连接起来,进行逻辑运算的式子式子逻辑表达式的值:和关系表达式一样,逻辑表达式的值也只有1或0两种,

8、1代表真,0代表假。逻辑表达式的逻辑表达式的逻辑表达式的逻辑表达式的“不完全计算不完全计算不完全计算不完全计算”:”:如:a=0;b=1;c=a+&b+;d=a+|b+;第第3个式子,先计算表达式个式子,先计算表达式a+的值为的值为0,然后,然后a加加1,逻辑表达式,逻辑表达式变为变为0&b+,因为此表达式的值必为,因为此表达式的值必为0,所以,所以系统不再计算系统不再计算b+,b仍旧为仍旧为1,a由于自增,也为由于自增,也为1。第第4个式子,同样先计算表达式个式子,同样先计算表达式a+的值为的值为1,然后,然后a加加1,逻辑表,逻辑表达式变为达式变为1|b+,由于表达式的值必为,由于表达式的

9、值必为1,所以系统不再计算所以系统不再计算b+,b仍旧为仍旧为1,a由于自增,也为由于自增,也为2。条件运算条件运算运算符:运算符:?:一般形式:判定式一般形式:判定式?表达式表达式1:表达式表达式2运算规则:先求判定式的值,若非零,则将表达式运算规则:先求判定式的值,若非零,则将表达式1的值的值作为条件表达式的值;若为作为条件表达式的值;若为0,则将表达式,则将表达式2的值作为条件的值作为条件表达式的值。表达式的值。结合方向:从右到左结合方向:从右到左a=1;b=2;c=a4?5:6;上面的条件表达式等价于:上面的条件表达式等价于:c=a4?5:6);当表达式当表达式1和表达式和表达式2的类

10、型不同时,以较高的类型作为条的类型不同时,以较高的类型作为条件表达式的类型。件表达式的类型。float a,b;a=(1?1:5)/2;/*1?1:5的值为的值为1,1/2为整数除,为整数除,a的值为的值为0.0*/b=(1?1:5.0)/2;/*1?1:5的值为的值为1.0,1.0/2为实数除,为实数除,b的值为的值为0.5*/位运算六种位运算符:六种位运算符:、&、|功能:对二进制位进行操作功能:对二进制位进行操作操作对象只能为字符型和整型数据操作对象只能为字符型和整型数据1.1.按位取反:按位取反:按位取反:按位取反:p格式:格式:运算对象运算对象p功能:把运算对象的内容按位取反功能:把

11、运算对象的内容按位取反p例:int i=199;求i的值。整数二进制数199的二进制数为:0000 0000 1100 0111 按位取反得:1111 1111 0011 1000对应的是整型十进制数200在内存中的补码表达式。关系式:i+i=-12.2.左移运算:左移运算:左移运算:左移运算:p格式:运算对象位数p功能:向左端(高位)移动若干位数,移出的部分舍弃,右端(低位)补0;p例:char a=5,b;求b=ap格式:运算对象位数p功能:向右端(低位)移动若干位数,移出的部分舍弃,正整数或无符号整数左端(高位)补0,负数补1;p例:char a=41,b;求b=a3的值十进制数十进制数

12、41对应的二进制数为:对应的二进制数为:0010 1001右移右移3位后得到:位后得到:0000 0101b的值为的值为54.4.按位与运算:按位与运算:按位与运算:按位与运算:&p格式:运算对象&运算对象p功能:运算对象按位对齐后,相应的位进行与运算p例:求int a=41&165的值十进制数41对应的二进制数:0000 0000 0010 1001十进制数165对应的二进制数:&0000 0000 1010 0101结果为十进制数33:0000 0000 0010 00015.5.按位异或运算:按位异或运算:按位异或运算:按位异或运算:p格式:运算对象运算对象p功能:运算对象按位对齐后,相

13、应的位进行异或运算(不同为1,相同为0)p例:求int a=41165的值十进制数41对应的二进制数:0000 0000 0010 1001十进制数165对应的二进制数:0000 0000 1010 0101结果为十进制数140:0000 0000 1000 11006.6.按位或运算:按位或运算:按位或运算:按位或运算:|格式:运算对象|运算对象功能:运算对象按位对齐后,相应的位进行或运算例:求int a=41|165的值十进制数41对应的二进制数:0000 0000 0010 1001十进制数165对应的二进制数:|0000 0000 1010 0101结果为十进制数173:0000 00

14、00 1010 1101不同数据类型之间的位运算long:0000 0000 0000 0000 0000 0000 0000 0000int :0000 0000 0000 0000char:0000 0000 右端对齐,正数和无符号左补0,负数左补1。位运算符的优先关系位运算符的优先关系从高到低依次为:从高到低依次为:&|赋值运算赋值运算赋值运算符及其表达式赋值运算符及其表达式一般形式:变量名一般形式:变量名=表达式表达式功能:先计算右边功能:先计算右边“表达式表达式”的值,然后把这个值赋值的值,然后把这个值赋值给左边的变量给左边的变量赋值表达式也有值,其值等于右边表达式的值赋值表达式也有

15、值,其值等于右边表达式的值赋值运算符的结合方向是从右到左赋值运算符的结合方向是从右到左如:i=j=3+5;先计算3+5的值,然后赋值给j,最后把赋值表达式j=3+5的值赋值给i,所以j=8,i=8。相当于用连等的方式给多个变量赋同一个值。优先级:仅高于逗号运算符优先级:仅高于逗号运算符复合赋值运算10种复合赋值运算符:种复合赋值运算符:*=、/=、%=、+=、-=(算术运算符(算术运算符+赋值运算符)赋值运算符)=、&=、=、|=(逻辑运算符(逻辑运算符+赋值运算符)赋值运算符)优先级和优先级和“=”一样,结合方向也是从右到左一样,结合方向也是从右到左计算规则,举例说明:计算规则,举例说明:i

16、+=5;等价于等价于i=i+5j*=i-7;等价于等价于j=j*(i-7)int i=5;i+=i*=i+6;先计算先计算i+6,得,得11,i仍为仍为5计算计算i*=11,即,即i=i*11,得,得55,i变为变为55计算计算i+=55,即,即i=i+55,得,得110,i变为变为110赋值运算中得类型转换规则赋值运算中得类型转换规则在赋值表达式中,如果右边的表达式和左边的变量的在赋值表达式中,如果右边的表达式和左边的变量的数据类型不一致但都是数值时,系统自动将右边的数数据类型不一致但都是数值时,系统自动将右边的数据类型转换成左边变量的数据类型再赋值。据类型转换成左边变量的数据类型再赋值。转

17、换规则:转换规则:实数实数整数:舍弃小数部分整数:舍弃小数部分整数整数实数:数值不变,以浮点形式存储,补足精实数:数值不变,以浮点形式存储,补足精度度整型、字符型整型、字符型不同类型的整型、字符型不同类型的整型、字符型字节数相同:原样赋值字节数相同:原样赋值变量的字节数少:截取低位变量的字节数少:截取低位变量的字节数多:高位补足变量的字节数多:高位补足补补0:有一个为无符号类型的,高位补:有一个为无符号类型的,高位补0符号扩展:两者都是有符号的数据类型,正数补符号扩展:两者都是有符号的数据类型,正数补0,负数补负数补1类型转换类型转换格式:格式:(类型名类型名)(表达式表达式)功能:将一个表达

18、式的值转换为所需的数功能:将一个表达式的值转换为所需的数据类型据类型1/2的值为的值为0,(double)1/2的值为的值为0.5类型转换并不改变变量的数据类型类型转换并不改变变量的数据类型如:如:float i=5.6;int j;j=(int)i%2;运行结果:运行结果:i=5.6,j=1;逗号运算逗号运算一般形式表达式1,表达式2,表达式n功能:从左到右计算每一个表达式的值,将最右边表达式的值作为整个逗号表达式的值。main()int i,j,k;i=1;k=(j=+i,i+=j,i+=5);printf(“%d,%d,%dn”,i,j,k);运行结果:9,2,9长度运算符长度运算符运算

19、符号:运算符号:sizeof()功能:计算变量或类型所占内存字节数的大小功能:计算变量或类型所占内存字节数的大小sizeof(数据类型数据类型):如:如sizeof(int),sizeof(long)sizeof(变量名变量名):如:如double f;sizeof(f);pp例例例例:#include:#include ppmain()main()pp ppchar ch;char ch;ppprintf(double=%dtc=%dn,sizeof 10.0,sizeof printf(double=%dtc=%dn,sizeof 10.0,sizeof(c);(c);ppprintf(c

20、har=%dtfloat=%dn,sizeof ch,sizeof printf(char=%dtfloat=%dn,sizeof ch,sizeof(float);(float);ppgetch();getch();以下是等级考试中填空题下列语句中,符合C语言语法的赋值语句是()。a=7+b+c=a+7;a=7+b+=a+7;a=7+b,b+,a+7;a=7=b,c=a+7;已知double a=5.2;则正确的赋值表达式是()。a+=a-=(a=4)*(a=3)a=a*3=2a%3a=double(-3)已知char a=R;则正确的赋值表达式是()。a=(a+)%4a+2=3a+=256-a=078 已知int a=R;则正确的表达式是()。a%10a=int(3e2)2*a=a+a=a+a=a+3作业:分析下列的式子int a=20,b=28,c;c=(a&b)2;的值怎样用C语言上机int a=20,b=28,c;c=(ab)2;a=0000,0000,0001,0100b=0000,0000,0001,1100c=0000,0000,0001,0100c=0000,0000,0000,0101逻辑运算符的优先级依次为()。(a)|&!(b)&|!(c)!&|(d)!|&已知int a=3,b=5;则表达式a&!b 的值为()。(a)3 (b)2 (c)0 (d)1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁