![C语言程序设计课件第3章100913_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b1.gif)
![C语言程序设计课件第3章100913_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b2.gif)
![C语言程序设计课件第3章100913_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b3.gif)
![C语言程序设计课件第3章100913_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b4.gif)
![C语言程序设计课件第3章100913_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b/e6d5e54d-d751-4247-a2fd-e9dfffdc7e7b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-10-91高级语言程序设计 2021-10-92第三章 表达式与运算符主讲主讲: : 计算机学院计算机学院 朱立华朱立华n表达式体现对数据的处理,由运算符和运算对象组成表达式体现对数据的处理,由运算符和运算对象组成 n掌握每种运算符的以下知识:掌握每种运算符的以下知识:对运算对象的要求对运算对象的要求运算符的结合性运算符的结合性运算符的优先级运算符的优先级运算结果的特性运算结果的特性n有多种运算符的复杂表达式的计算顺序及计算结果有多种运算符的复杂表达式的计算顺序及计算结果n数据类型的自动转换规则及强制转换的方法数据类型的自动转换规则及强制转换的方法n表达式实现对数据的处理,每个表达式
2、都有唯一的值表达式实现对数据的处理,每个表达式都有唯一的值n表达表达式由式由运算对象运算对象和和运算符运算符组成组成n运算对象的种类:运算对象的种类:常量、变量、有返回值的函数调用常量、变量、有返回值的函数调用、其它表达式其它表达式n例:例:2 a rand() 2 a rand() (2+a)2+a)* *rand( )rand( )n运算符:共运算符:共3434种,分为种,分为1515个不同的优先级个不同的优先级可以理解成是不带运算符的最简单表达式可以理解成是不带运算符的最简单表达式常量表达式常量表达式变量表达式变量表达式函数表达式函数表达式带运算符的表达式带运算符的表达式n每个表达式都有
3、每个表达式都有唯一确定的值唯一确定的值, ,表达式不是左值就是表达式不是左值就是右值右值 n右值:右值:只能出现在赋值号(只能出现在赋值号(= =)右边的表达式)右边的表达式 n左值:左值:不是右值的表达式就是左值不是右值的表达式就是左值n左值与右值的关系:左值与右值的关系:右值只能出现在赋值号的右边;右值只能出现在赋值号的右边;而左值既可以出现在赋值号的左边,又可以出现在赋而左值既可以出现在赋值号的左边,又可以出现在赋值号的右边。左值可以取地址值号的右边。左值可以取地址, ,右值不可以取地址右值不可以取地址. .n例:例: 2 a rand() (2+a)*rand( ) a=b常量表达式只
4、能作为右值常量表达式只能作为右值例:例:a=a=2 2;(;(右值右值) )变量表达式为左值变量表达式为左值, ,既可在赋值号左边也可以既可在赋值号左边也可以在右边在右边, ,例:例:a a=5;(=5;(左边左边) b=b=a a;(;(右边右边)此函数表达式为右值此函数表达式为右值例:例:a a=rand( )=rand( )右值右值)此表达式只能作为右值此表达式只能作为右值例:例:b=(2+a)*rand( ); (右值右值) )赋值表达式只能作为右值赋值表达式只能作为右值例:例:c=a=b;(右值右值) (a=b)=c;(出错出错)算术运算符算术运算符主要完成数值计算问题,具体如下表所
5、列主要完成数值计算问题,具体如下表所列运算符运算符优先优先级级结合结合方向方向对运算对象对运算对象的要求的要求运算结果特性运算结果特性特殊说明特殊说明- 取负取负2 2从右从右到左到左整、实型值整、实型值运算对象的相运算对象的相反数反数单目运算符单目运算符+ 自增自增整整,实实,字符字符,指针型指针型变量变量结果与变量的结果与变量的值可能一致值可能一致单目单目,分为前分为前+ 后后+- 自减自减单目单目,分为前分为前+ 后后- -* 乘乘3 3从左从左到右到右允许整型与允许整型与实型数混合实型数混合只要有只要有1个实对个实对象结果实型,象结果实型,否则整型结果否则整型结果/ 除除两个整数相除只
6、能两个整数相除只能得到得到整数商整数商% 取余取余仅限整型数仅限整型数整除的余数整除的余数正负号同第正负号同第1数数+ 加加4 4从左从左到右到右允许整型与允许整型与实型数混合实型数混合只要有只要有1个实对个实对象结果实型,象结果实型,否则整型结果否则整型结果- 减减例:例:int a=3,b,c; a+的表达式结果是的表达式结果是3,变量,变量a的值是的值是4;+a的表达式结果是的表达式结果是4,变量,变量a的值是的值是4;因此因此,c=a+执行后,执行后, c的值是的值是3,a的值是的值是4 b=+a执行后,执行后,b的值是的值是4,a的值也是的值也是4例:例:int a=3; -a结果为
7、结果为-3,但是变量,但是变量a的值仍为的值仍为3-2.45是是2.45的相反数的相反数例:例:int a=3,b,c; a-的表达式结果是的表达式结果是3,变量,变量a的值是的值是2;-a的表达式结果是的表达式结果是2,变量,变量a的值是的值是2;因此因此,c=a-执行后,执行后, c的值是的值是3,a的值是的值是2 b=-a执行后,执行后,b的值是的值是2,a的值也是的值也是2例:例:int a=27,b=5,c; 表达式表达式a/b结果是结果是5,而不是,而不是5.4表达式表达式27.0/b结果是结果是5.4表达式表达式27.0/5.0结果是结果是5.4例:例:int a=27,b=5,
8、c; 表达式表达式a%b结果是结果是2,表达式表达式-a%b结果是结果是-2 表达式表达式27.0%b是错误的是错误的例:例:表达式表达式2+3结果是结果是5表达式表达式2+3.0结果是结果是5.0表达式表达式2.0+3.0结果是结果是5.0例:例:表达式表达式3-2结果是结果是1表达式表达式3.0-2结果是结果是1.0表达式表达式3.0-2.0结果是结果是1.0n程序程序3.1 3.1 赋值表达式及算术运算符示例赋值表达式及算术运算符示例n#includen#include /包含随机函数包含随机函数rand的声明的声明nint main( )n int a=5,b=6,c=7;nprint
9、f(“%dn”,rand(); /显示随机数显示随机数nprint(%dn,a*(b+c)/2-2); /显示算术表达式的值显示算术表达式的值nprintf(%dn,a=b); /显示赋值表达式即显示赋值表达式即a的值的值nb=rand()%10; /混合表达式赋混合表达式赋0至至9之间的之间的1个随机数个随机数nprintf(“%dn”,c=a=b); /显示赋值表达式的值即显示赋值表达式的值即c的值的值n return 0;n413067动动态态演示演示过过程程关系运算符关系运算符主要完成表达式间的比较,比较的结果主要完成表达式间的比较,比较的结果非真即假非真即假,c c语语言中言中无逻辑
10、类型无逻辑类型,故,故用用1 1表示表示真真,0 0表示表示假假任何类型的值,只要任何类型的值,只要不等于不等于0 0,在需要作出真假判断的场合就代表,在需要作出真假判断的场合就代表逻辑真逻辑真。 运算符运算符优先级优先级结合结合方向方向对运算对象的要求对运算对象的要求运算结果特性运算结果特性 大于大于6 6从左从左到右到右允许允许不同类型不同类型的值混合的值混合计算,运算对象计算,运算对象非非0就就表示表示真真值,值,0表示表示假假,当当类型不一致类型不一致时,会自时,会自动进行动进行类型转换类型转换为同一为同一种类型种类型 关系表达式的最终结关系表达式的最终结果只有两个值:果只有两个值:1
11、或或0,1表示真,表示真,0表示假表示假用用括号括号可以可以提升优先提升优先级,级,有时为了更清晰有时为了更清晰= 大于等于大于等于= 小于等于小于等于= 相等相等7 7!= 不相等不相等结论结论: :关系运算符的优先级关系运算符的优先级低于低于算术运算符算术运算符例:例:c(c(a+ba+b) ) 可以可以写成:写成: ccb)!=c(ab)!=c 可以写可以写成:成: ab!=cab!=c例:例:a=(bc)可以写可以写成:成: a=b=(a+b)用括号表达式的含用括号表达式的含义清楚义清楚n程序程序3.2 3.2 关系运算示例关系运算示例n#includen#include /包含随机函
12、数包含随机函数rand的声明的声明nint main( )n n int a=rand()%10; /产生产生3个个09的随机数的随机数 n int b=rand()%10;n int c=rand()%10,d;n printf(“a=%d,b=%d,c=%dn”,a,b,c); /输出输出n printf(%dn,c=(a+b);n return 0;na=1,b=7,c=410rand( )函数产生一个非负随机整数,函数产生一个非负随机整数,产生一个产生一个a,b范围的非负随机整数的方范围的非负随机整数的方法是:法是:a+rand( )%(b-a+1) 动动态态演示演示过过程程逻辑运算符
13、逻辑运算符主要完成更复杂的条件判断主要完成更复杂的条件判断逻辑表达式的逻辑表达式的最终结果最终结果只有两个:只有两个:1 1表示表示真,真,0 0表示表示假假。任何类型的值,只要任何类型的值,只要不等于不等于0 0,在需要作出真假判断的场合就代表在需要作出真假判断的场合就代表逻辑真逻辑真,0 0代表代表逻辑假逻辑假运算符运算符优先级优先级 结合结合方向方向对运算对象的对运算对象的要求要求运算结果特运算结果特性性说明说明! 逻辑非逻辑非2从右从右至左至左允许允许不同类型不同类型的值混合计算,的值混合计算,运算对象运算对象非非0就表示就表示真真值,值,0表示表示假假一定是整型,一定是整型,并且只有
14、两并且只有两个值个值1和和0,分别表示分别表示真真和假和假 单目运算符单目运算符,置,置反反运算对象真假运算对象真假& 逻辑与逻辑与11从左从左至右至右两个对象两个对象都为真都为真结果才为真结果才为真| 逻辑或逻辑或12两个对象只要有两个对象只要有1 1个真个真结果就为真结果就为真几种运算符的几种运算符的优先级优先级: :单目单目-算术算术-关系关系-逻辑与逻辑与-逻辑或逻辑或例:例:!a 结果为结果为0 0,!(2+35)!(2+35)结果为结果为1 1例:例:(ab)&(xy) 可可以写成:以写成: ab&x=a&ch=z,而不是:而不是: a=a=chch=zb)&(c=c*2) 0,c
15、的值仍为的值仍为7 短路短路,因为因为ab的结果为的结果为0,故,故c=c*2不执行不执行 (ab)&(c=c*2) 1,c的值为的值为14 不短路不短路,因为,因为ab的结果为的结果为1,故,故c=c*2执行执行 (ab)&(c=c-7) 0,c的值为的值为0 不短路不短路,因为,因为ab的结果为的结果为1,故,故c=c-7执行执行(ab) )|(c=c*5) 1,c的值仍为的值仍为7 短路短路,因为,因为ab)|(c=c*5) 1,c的值为的值为35 不短路不短路,因为,因为ab的结果为的结果为0,故,故c=c*5执行执行 (ab)|(c=c-7)0,c的值为的值为0 不短路不短路,因为,
16、因为ab的结果为的结果为0,故,故c=c-7执行执行 假设假设已有定义:已有定义:int a=5,b=6,c=7; 下表给出了下表给出了&和和|的短路功能的短路功能练习:练习:设有语句:设有语句:int a = 3 , b =5, m=0; 则执行语句则执行语句a+b8&(m = a=3)后,后,m m的值为的值为_,_,整个表达式的值为整个表达式的值为_n程序程序3.3 3.3 逻辑运算示例逻辑运算示例 n#includen#include /包含随机函数包含随机函数rand的声明的声明nint main( )n n int a=1+rand()%50, b=1+rand()%50;n in
17、t x=rand()/a, y=rand()/b;n printf(%d,%d,%dn,a,b,ab);n printf(%d,%d,%dn,x,y,xy);n printf(%dn,(ab)&(xy);n printf(%dn,(a=b)|(x=y);n printf(%dn,(!a)|(a!=b);n return 0;n42,18,042,18,0150,1472,1150,1472,10 00 01 1 rand( )函数产生一个非负随机整数,函数产生一个非负随机整数,产生一个产生一个a,b范围的非负随机整数的方范围的非负随机整数的方法是:法是:a+rand( )%(b-a+1) 动动
18、态态演示演示过过程程n在算术运算符中已提到单目运算符在算术运算符中已提到单目运算符自增自增(+)(+)和和自减自减(-)(-)n自增自减运算符的几个特殊性:自增自减运算符的几个特殊性: (1)(1)这两种运算符专门用于改变一个变量自身的值这两种运算符专门用于改变一个变量自身的值( (增或减增或减1)1),因此实质上具有因此实质上具有赋值赋值功能,运算对象功能,运算对象只能是一个变量只能是一个变量。 (2)(2)对变量变化的时机取决于对变量变化的时机取决于运算符与运算对象的相对位置运算符与运算对象的相对位置,有有前后之分前后之分,+a+a和和a a为为前前+(-)+(-),a+a+和和a a为为
19、后后+(-)+(-) (3)(3)前前+或前或前是指是指先改变变量的值先改变变量的值,再用变化后的值参加运,再用变化后的值参加运算;算;后后+或后或后是指先用未变化过的变量的值参加表达式的是指先用未变化过的变量的值参加表达式的运算,运算,最后再改变变量的值。最后再改变变量的值。共同点就是共同点就是变量值肯定改变变量值肯定改变 (4)(4)需要区分需要区分表达式的值和变量的值,表达式的值和变量的值,大部分情况下不是一回大部分情况下不是一回事,但是如果事,但是如果仅仅改变变量而不用它运算,则前后无区别仅仅改变变量而不用它运算,则前后无区别表达式表达式等价表示等价表示 表达式的值表达式的值变量的值变
20、量的值x=i+; x=i; i=i+1; 2 2i i=3 3x=+j; j=j+1; x=j; 5j=5x=i-; x=i; i=i-1; 2i=1x=-j; j=j-1; x=j; 3j=3x=(i+)+(+j); j=j+1; x=i+j; i=i+1; 7i=3,j=5x=(i-)+(-j);j=j-1; x=i+j; i=i-1; 5i=1,j=3x=x+i+; x=x+i; i=i+1; 10i=3x=x+i; x=x+ i; x=x+1; 11i=2+(+i); i=i+1; i=i+1; 4i=4i+; 或或 +i; i=i+1; 3i=3假设假设已有定义:已有定义:int x
21、=8,i=2,j=4; 下表列出了下表列出了有自增自减运算符有自增自减运算符的表的表达式的值及变量的值达式的值及变量的值n程序程序3.4 3.4 自增自减运算示例自增自减运算示例 n#includenint main( )n int i=5,j=6,k;n i+; +j; /相当于相当于i=i+1;j=j+1;n printf(i=%d,j=%dn,i,j);n i-; -j; /相当于相当于i=i-1;j=j-1;n printf(i=%d,j=%dn,i,j);n k=(i+)+(+j); /相当于相当于j=j+1;k=i+j; i=i+1;n printf(i=%d,j=%d,k=%dn
22、,i,j,k);n k=(i-)+(-j); /相当于相当于j=j-1;k=i+j; i=i-1;n printf(i=%d,j=%d,k=%dn,i,j,k); n return 0;ni=6,j=7i=6,j=7i=5,j=6i=5,j=6i=6,j=7,k=12i=6,j=7,k=12i=5,j=6,k=12i=5,j=6,k=12 动动态态演示演示过过程程n位运算位运算是对字节或字内的是对字节或字内的二进制数位二进制数位进行测试、抽取、设置或进行测试、抽取、设置或移位等操作,是移位等操作,是c c语言语言可对硬件编程可对硬件编程的体现。运算对象只能是的体现。运算对象只能是intint类
23、型类型(包括(包括charchar类型类型) )nc c中提供中提供6 6种位运算符,其中的种位运算符,其中的 (按位取反为单目运算符按位取反为单目运算符),其),其余余5 5个为双目运算符,具体见下一页个为双目运算符,具体见下一页n多种运算符的优先级:多种运算符的优先级:n单目单目-算术乘除取余算术乘除取余-算术加减算术加减-移位移位-关系关系-按位与按位与-按位按位异或异或-按位或按位或-逻辑与逻辑与-逻辑或逻辑或运算符运算符优先优先级级结合结合方向方向运算基本方法运算基本方法特殊用途特殊用途特殊说特殊说明明 按位取反按位取反 2从右从右至左至左对运算对象每对运算对象每1个二进个二进制位制
24、位01取反取反按位取反运算经常按位取反运算经常被用于被用于加密和解密加密和解密 单目单目运运算符算符 右移位右移位5第第1操作数的每位按操作数的每位按向向左左依次平移第依次平移第2操作数操作数指定的位数指定的位数可快速地实现整数可快速地实现整数的的除法除法运算运算 ,有利,有利于算法的于算法的硬件实现硬件实现 相当于相当于除除2的的几次方几次方& 按位与按位与8两个对象对应二进制两个对象对应二进制位均为位均为1,本位才为本位才为1可对字节中某一或可对字节中某一或几个几个二进制位清二进制位清0 按位异或按位异或 9两个对象对应二进制两个对象对应二进制位相同为位相同为0相异为相异为1可判断两个数对
25、应可判断两个数对应二进制位的同或异二进制位的同或异 | 按位或按位或10两个对象对应二进制两个对象对应二进制位有位有1个为个为1则结果为则结果为1可对字节中某一或可对字节中某一或几个几个二进制位置二进制位置1 00000101 11111010152 =3 00001111 0 00 0相当于相当于15/215/22 2 00001101& 00000011 00000001 00000011 00000011 00000101 00000101 00000110 00000110 10001101 | 00111111 10111111n条件运算符条件运算符是是c c语言中语言中唯一唯一的的
26、1 1个个三目运算符三目运算符n其格式为其格式为:表达式:表达式1 1?表达式表达式2 2:表达式表达式3 3n计算方法及运算结果:计算方法及运算结果:先先求表达式求表达式1 1得到得到非非0 0表示表示真真,得到,得到0 0表示表示假假。如果是。如果是真真,则条件表达式的值等于,则条件表达式的值等于表达式表达式2 2的值的值( (此时此时表达表达式式3 3不计算不计算) );如果是假,则条件表达式的值等于表达式;如果是假,则条件表达式的值等于表达式3 3的值的值( (此时此时表达式表达式2 2不计算不计算) )。 n优先级优先级:1313级,仅高于级,仅高于逗号和赋值运算符逗号和赋值运算符的
27、优先级的优先级n结合方向结合方向:从右至左从右至左,当有条件运算符,当有条件运算符嵌套嵌套时,按照从时,按照从右至左右至左的顺序结合。先计算第一对象的顺序结合。先计算第一对象, ,根据结果再决定后面的运算根据结果再决定后面的运算n对运算对象的要求对运算对象的要求:可以是任何类型的表达式:可以是任何类型的表达式n例例:int a=1,b=2,x; 则条件运算表达式:则条件运算表达式:ab?(x=6):(x=7)的值是的值是?n解析解析: 以上条件表达式根据右结合原则实际上是以上条件表达式根据右结合原则实际上是: ab?(x=6):(x=7)n计算顺序计算顺序:先计算整个条件表达式的第一对象先计算
28、整个条件表达式的第一对象ab,结果为真结果为真,则则计算第二对象计算第二对象x=5,后面红色括号内的第三对象不再计算后面红色括号内的第三对象不再计算,因此整因此整个表达式的结果为个表达式的结果为5,变量变量x的值也是的值也是5.n注意注意: 结合方式与运算顺序并不是一回事结合方式与运算顺序并不是一回事!5 5n程序程序3.5 3.5 条件运算示例条件运算示例 n#includen#includenint main( )n n int a=rand()%10, b=rand()%10,c,d;n c=ab?a:b;n d=ab?a:b;n printf(a=%d,b=%dn,a,b);n pri
29、ntf(c=%d,d=%dn,c,d); n return 0;na=1,b=7a=1,b=7c=7,d=1c=7,d=1动动态态演示演示过过程程n赋值赋值运算符运算符是是c c语言中语言中使变量获得值使变量获得值的运算符,有两大类的运算符,有两大类复合赋复合赋值运算符值运算符 : (1)(1)双目算术运算与赋值运算符一起,构成双目算术运算与赋值运算符一起,构成算术复合赋值运算符算术复合赋值运算符 (2)(2)双目位运算与赋值运算符一起,构成双目位运算与赋值运算符一起,构成位复合赋值运算符位复合赋值运算符n运算对象运算对象:左边:左边只能是变量只能是变量,右边右边是一个是一个表达式表达式n计算
30、方法及运算结果:计算方法及运算结果:表示给该表示给该变量空间赋值变量空间赋值或修改该变量空或修改该变量空间中的值,此时间中的值,此时变量变量也称为也称为左值左值。赋值运算符右边是一个表达。赋值运算符右边是一个表达式,其类型最好是与左值式,其类型最好是与左值类型一致类型一致, , 不一致时自动类型转换不一致时自动类型转换. .n优先级优先级:1414级,仅高于级,仅高于逗号逗号的优先级的优先级n结合方向结合方向:从右至左从右至左, ,在在连续连续赋值时,按赋值时,按从右至左从右至左的顺序的顺序依次依次 n例例: :设设intint a=1,b=2,c=5; a=1,b=2,c=5; 计算计算 a
31、=b=c a=b=c 和和 (a=b)=c(a=b)=c先计算先计算b=cb=c,b b获得值获得值5 5,该赋值表达式,该赋值表达式结果结果为为b b;此结果作为赋值表达式;此结果作为赋值表达式a=b=ca=b=c的的右右值赋给值赋给a a,因此,因此a=5,a=5,最终最终a,b,ca,b,c的值的值均为均为5 5 错误错误!a=b!a=b是表达式是表达式, ,不可以作为左值使用不可以作为左值使用! !将复合赋值运算符转换为等效的普通赋值运算符按以下将复合赋值运算符转换为等效的普通赋值运算符按以下3 3步:步:( (1) 1)将原复合赋值运算符将原复合赋值运算符右边右边的表达式的表达式加圆
32、括号加圆括号作为作为1 1个个整体整体;( (2)2)将原复合赋值运算符将原复合赋值运算符左边左边的的变量名连同那个算术运算符或变量名连同那个算术运算符或位运算符位运算符一起一起移到移到赋值赋值号的右边号的右边,作为,作为赋值赋值号右边的号右边的第一第一部分部分置于原复合赋值运算符右边整体之前;置于原复合赋值运算符右边整体之前;( (3)3)将原复合赋值运算符将原复合赋值运算符左边的变量名留下左边的变量名留下,直接跟赋值号直接跟赋值号,去掉原来的算术运算符或位运算符。去掉原来的算术运算符或位运算符。例:例:a a* *=b+5 =a=a=b+5 =a=a* *( (b+5b+5) )n程序程序
33、3.6 3.6 赋值及复合赋值示例赋值及复合赋值示例 n#includenint main( )n n int a,b,c;n a=b=c=7;/相当于相当于c=7;b=c;a=bn c+=a+;/相当于相当于c=c+a; a+;n printf(a=%d,c=%dn,a,c);n c%=+a;/相当于相当于+a; c=c%a;n printf(a=%d,c=%dn,a,c);n c*=a-;/相当于相当于c=c*a; a-;n printf(a=%d,c=%dn,a,c);n return 0;na=8,c=14a=9,c=5a=8,c=45动动态态演示演示过过程程n逗号逗号不仅是不仅是c
34、c语言源程序中的一种语言源程序中的一种分隔符,分隔符,还是一种还是一种运算符运算符。n逗号表达式的形式:逗号表达式的形式:表达式表达式1 1,表达式,表达式2 2,, ,表达式表达式n nn运算对象运算对象:可以是任何类型的:可以是任何类型的表达式表达式n计算方法及运算结果:计算方法及运算结果:按按从左到右从左到右的顺序依次计算各表达式的的顺序依次计算各表达式的值,值,最后一个表达式最后一个表达式n n的结果的结果就是整个逗号表达式的结果就是整个逗号表达式的结果. .n优先级优先级:1515级,优先级最低,通常级,优先级最低,通常通过加括号通过加括号提升其优先级提升其优先级n结合方向结合方向:
35、从左至右从左至右 n例例: :设所有变量均为设所有变量均为intint型,计算型,计算 x=a=3,6x=a=3,6* *a a 和和 x=(a=3,6x=(a=3,6* *a)a) 这是一个这是一个逗号逗号表达式,先计算赋值表达式表达式,先计算赋值表达式x=a=3x=a=3,该表达式的结果为,该表达式的结果为x x,变量变量x x和和a a的的值均为值均为3 3,再计算第二个表达式,再计算第二个表达式6 6* *a a结果为结果为1818,因此逗号表达式最后结果为,因此逗号表达式最后结果为1818 这是一个这是一个赋值赋值表达式,先计算圆括号内逗号表表达式,先计算圆括号内逗号表达达a=3,6
36、a=3,6* *a a ,该表达式的结果为,该表达式的结果为1818,再将该,再将该结果赋值给变量结果赋值给变量x x,因此赋值表达式最后结,因此赋值表达式最后结果为果为1818,变量,变量a a的值为的值为3 3,x x的值为的值为1818 c c语言中的括号也是运算符,处于第一优先语言中的括号也是运算符,处于第一优先级,用于提升其他运算符的优先级,及级,用于提升其他运算符的优先级,及作为函数参数表的起止标记作为函数参数表的起止标记n不同类型不同类型进行混合运算需要先转换为进行混合运算需要先转换为同一种类型同一种类型再计算,这个类再计算,这个类型称为型称为目标类型目标类型。c c语言提供了语
37、言提供了3 3种种方式的方式的类型转换类型转换。n(1)(1)不同类型数据混合运算时,不同类型数据混合运算时,由编译器自动完成由编译器自动完成隐式类型转换隐式类型转换 float转为转为double 短存储型转为长存储型短存储型转为长存储型 有符号数据转为无符号数据有符号数据转为无符号数据 整型转为浮点型整型转为浮点型 n(2)(2)强制性数据类型转换强制性数据类型转换:根据用户需要用语句进行转换,形式:根据用户需要用语句进行转换,形式 (目标类型名目标类型名)待转换表达式)待转换表达式 n例例: : intint a=(int)3.14; a=(int)3.14; /a=3/a=3 n (float) (float)a a/4 = 3.0/4/4 = 3.0/4结果为结果为0.750.75n (float)( (float)(a/4a/4) = 3/4) = 3/4结果为结果为0,0,然后然后float(0)float(0),结果,结果0.00.0n 变量变量a a的类型仍为的类型仍为intint型。型。强制类型转换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届高中语文一轮复习学案48 小说情节的艺术技巧与作用(基础考法)(含答案)
- 短视频营销在餐饮业的发展趋势分析
- 温控与绿色建筑的共融发展研究
- 社交媒体在文化传承中的作用与价值
- 感谢词发言稿怎么写
- 现代交通枢纽中铁路货物的快速通关技术
- 班级德育与传统文化传承的关联性分析
- 车间班长个人总结
- 教师学习工作总结
- 知识产权跨境许可操作指南
- 高教版2023年中职教科书《语文》(基础模块)上册教案全册
- 存款代持协议书范文模板
- 2023年部编人教版三年级《道德与法治》下册全册课件【全套】
- 光伏项目施工总进度计划表(含三级)
- 医保基金监管培训课件
- 部编版小学语文四年级下册教师教学用书(教学参考)完整版
- 煤矿职业卫生培训课件2023
- 线务员之歌(电信线务员朗诵词)
- (完整版)fluent炉膛仿真教程文档
- 生活饮用水水质常规指标及限值表
- 浅谈六解放思想指导下的以水墨为主的幼儿园美育实践活动
评论
0/150
提交评论