【文档说明】C语言第三章(续)课件.ppt,共(19)页,373.366 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44558.html
以下为本文档部分文字说明:
运算符与表达式第3章(续)1.运算符和表达式2.算术运算符和算术表达式3.赋值运算符和赋值表达式4.自增、自减运算符5.逗号运算符和逗号表达式6.不同类型数据间的混合运算7.课后作业本讲主要内容:C运算符1运算符和表达式表达式是常量、变量、数组元素、函数等运算
对象和运算符以及括号的有意义组合类似数学算式或公式,但写法有不同运算符的优先级和结合性见教材附录III算术运算符+-*/%指针运算符*&关系运算符><==>=<=!=求字节数运算符sizeof逻辑运算符!&
&||强制类型转换运算符类型位运算符<<>>~|^&分量运算符.->赋值运算符=下标运算符[]条件运算符?:其它逗号运算符,2算术运算符和算术表达式2.1、基本的算术运算符+(加法运算符,或正值运算符):如2+3、+6-(减法运算符,或负值运算符):如3
-4、-6*(乘法运算符):如3*4/(除法运算符):两个整数相除,其值为整数,如5/3值为1除数、被除数中有一个为负值时,结果向零取整,如-5/3为-1除数、被除数中有一个为实数时,结果为double型-7%4,7%-4,-7%-4的值为多少?%(模(求余)运算符):%两侧
均为整型数据如7%4的值为3(-3,3,-3)2.2、算术表达式和运算符的优先级与结合型1)用算术运算符和括号将运算对象(操作数)连接起来的、符合C语言语法规则的式子,称作算术表达式。如:-123a+b10*(alpha+1.5)*sin(beta)2)运算符有优先
级和结合性优先级:算术运算符先*、/、%后+、-结合型:左结合,即表达式从左向右进行计算如:a+b/(c+d%e)-3.3+'4'*'3'3.3、类型转换与强制类型转换可以利用强制类型转换运算符将一个表达式转换成所需类型。如:(double)a(int)(x+y)与
(int)x+y不同(float)(8%5)例3.7voidmain(){floatx;inti;x=3.6;i=(int)x+2;printf("%f,%d\n",x,i);}同一运算符相连的运算数的数据类型自动从短类型
向长类型转化,如上例3.1.赋值运算符“=‖3.赋值运算符和赋值表达式用法:变量=表达式作用:将表达式的值赋给变量(构成赋值表达式)如:a=5;5=>aave=(a+b)/2;先计算(a+b)/2,结果赋给avex=y=z;首先z=>y,然后(y
=z)=>x与数学上的等式不同!5=x;x+1=y*a+3;都是非法的C语句说明1:在C语言中判断是否相等用关系运算(==)。说明2:运算结果——赋值表达式的值等于左边变量的值!3)整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中
。3.2、赋值结果与类型转换2)实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。如:设i为整型变量,执行i=5.34i的值为5如:对float型变量f,执行f=23f的值为23.000001)如果两边的类型一致,就直接赋值;否则需要进行类型转换。例3.9main()
{inti;floatf;i=5.34;f=23;printf(―i=%d,f=%f\n",i,f);}上机演示4)无符号整型与有符号整型例3.10voidmain(){unsigneda;intb=-1;a=b;printf("%d->%u\n",b,a);a=65534u;b=a;
printf("%d->%u\n",b,a);}1111111111111111b1111111111111111a001010110010101100000000i111111101111111011111111i5)char、int、long等类型的转换
①―短”数据赋给“长”变量保持数值不变符号扩展:若最高位为1(负数),则变量高字节位补1;反之,补0。例3.12voidmain(){inti;longl=6324232L;i=l;printf("i=%d\n",i);}②―长”数据赋给“短”变量截断:只将数据的低字节位原封
不动送到变量中0000000000010001i=-3276010000000000010000000000001100000l=6324232程序编译时有警告错3.3.复合的赋值运算符例如:a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)注意有括号x%=3等价于x=x%3
算术运算:+=,-=,*=,/=,%=位运算:<<=,>>=,&=,^=,|=说明:位运算在12章中介绍。赋值运算符与其他运算符的组合构成复合的运算符4、自增、自减运算符++i,--i在使用i之前,先使i的值加1或减1i++,i--在使用i之
后,使i的值加1或减1注意:(1)自增、自减运算符只能用于变量,而不能用于常量或表达式如:5++(a+b)++不合法如:-i++相当于-(i++)(2)++和--的优先级高于算术运算符,结合方向是“自右相左”请自学教材57~59页内容例1vo
idmain(){inti=0,j;j=i++;printf("%d%d\n",i,j);i=0;j=++i;printf("%d%d\n",i,j);}例2讲解演示习题3.105.逗号运算符和逗号表达式形式:表达式1,表达式2作用:用于连接表达式计算过程:先求解表达式1,在求
解表达式2。整个逗号表达式的值是表达式2的值。如:3+5,6+8例:以下两个表达式的含义是不同的。x=(a=3,6*3)x=a=3,6*a*逗号表达式可组合*逗号运算符的优先级最低,结合方向自右到左说明:并不是任何地方出现的逗号都是逗号运算符如:printf("%d,%d,%d\n",a,b,
c);如:(a=3*5,a*4),a+56不同类型数据间的混合运算整型、实型、字符型数据可以混合运算运算时,不同类型的数据要先转换成同一类型如:10+'a'+12.3-3.14*'\x123'floatdoublelongunsignedintchar,shortfloat型先转换成double
型char和short型先转换成int型不同类型数据按照类型级别由低到高的顺序转换低高转换规则例1:设k=2为int型变量,f=1.2为float型,d=4.0为double型。考虑如下式子的运算10+‗a‘+k*f–d/k解:原式=107+2.4+2.0=1
09.4+2.0=111.4最后类型为double型。例2:习题3.9(1)x+a%3*(int)(x+y)%2/4(x=2.5,a=7,y=4.7)原式=2.5+7%3*(int)(x+y)%2/4=2.5+1*7%2/4=2.5+¼=2.
5(2)(float)(a+b)/2+(int)x%(int)y(a=2,b=3,x=3.5,y=2.5)原式=?7课后作业1.精读第三章2.习题3.4,3.11,3.12(作在书上)