资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第4章_运算符和表达式ppt课件(全),*,第4章 运算符和表达式,第4章_运算符和表达式ppt课件(全),第4章 运算符和表达式,4.1 算术运算符和算术表达式,4.2 自增、自减运算,4.3 位运算,4.4 赋值运算,4.5 关系表达式与逻辑表达式,4.6 条件表达式与逗号表达式,第4章_运算符和表达式ppt课件(全),表达式,:用运算符将要运算的对象连接起来的式子,运算符的,优先级,:如 2+5*4,运算符的,结合性,:如 3.0*5/2,书写表达式规则 :如,可以写作1.0/2*(a*x+(b+x)/(a+x),第4章_运算符和表达式ppt课件(全),4.1 算术运算符和算术表达式,运算符 表达式,+3+5、+3,-5-2、-3,*3*5,32 (结果为1),3/2.0 ,3.0/2,3.0/2.0 (结果为1.5),7%4 (结果为3),(求余)-9%5 (结果为-4),9%(-5)(结果为 4),2.0%3 (错误,2.0不是整数),1.单目运算符,2.双目运算符,第4章_运算符和表达式ppt课件(全),字符以其ASCII码参加运算:,a+1 为 98,b-a 为 1,8-0 为 8,例:设a为两位整数,求其各位数字之和。,解:a/10+a%10 (如a=24,则结果为6),例:求一个整数 b 的十位上的数字。,解:(b%100)/10 (如b=4321,则结果为2),第4章_运算符和表达式ppt课件(全),3.,算术运算中的类型转换,(1)自动转换,规则如下,double,float,long,unsigned,int,char,short,低,高,例如:2+a+1.5,2+97+1.5,99+1.5,99.0+1.5,100.5,第4章_运算符和表达式ppt课件(全),(2)强制类型转换,一般形式为:,(类型名)表达式,例如:,(double)a (将 a转换成 double类型),(int)(x+y)(将 x+y的值转换成整型),(float)(5%3)(将5%3的值转换成 float型),(int)3.14%2 (即3%2),第4章_运算符和表达式ppt课件(全),4.2 自增、自减运算,1.运算符:,+、-,2.使用格式:,+i i的值,先加1,后,使用,如 i=3;j=+i;j:4,i:4,i+i的值,先,使用,后加1,如 i=3;j=i+;j:3,i:4,-i i的值,先减1,后,使用,i-i的值,先,使用,后减1,第4章_运算符和表达式ppt课件(全),又如:,i=3;printf(“d”,+i);,i=3;printf(“d”,i+);,3优先级与结合性,+、-的优先级与单目运算符(+、-)相同,比双目运算符(*、/、%、+、-)高,+、-具有右结合性,例如:-a+相当于:-(a+),第4章_运算符和表达式ppt课件(全),4.使用自增、自减运算符的注意事项,略,第4章_运算符和表达式ppt课件(全),4.3 位 运 算,1位运算符的种类,C语言共有六种位运算符:,&按位与运算符,|按位或运算符,按位异或运算符,二进制右移运算符,按位取反运算符,第4章_运算符和表达式ppt课件(全),2按位与运算(&),当对应位均为1时,结果为1;否则为0。,例如,12&10的运算如下:,12:00001100,&10:00001010,_,结果:00001000,又如,只保留a的第5位,其余位置0:,a :11010010,&020:00010000,_,a&020:00010000,第4章_运算符和表达式ppt课件(全),3按位或运算(|),对应位均为0时,结果为0;否则结果为1。,例如:,0123:01010011,|014:00001100,_,0123|014:01011111,例如:若想使a中的高四位(左端四位)不变,低四位(右端四位)置1,可用:a=a|017。,第4章_运算符和表达式ppt课件(全),4按位异或运算(),当对应位相同时,结果为0;否则为1。,例如:,00110011,11000011,_,11110000,又如,使a的高四位不变;低四位取反:,a:0110,1010,017:0000,1111,_,a017:0110,0101,第4章_运算符和表达式ppt课件(全),5按位取反运算(),使每一位上的0变1;1变0。,例如;0115是将八进制数115按位求反。,即:,01001101,_,结果:10110010,第4章_运算符和表达式ppt课件(全),6左移运算(),例如:,char a=6,b;,b=a2;,用二进制数如下:,a :00000110 (a=6),b=a),int a=-071400,b;,b=a2;,符号位,a的二进制原码表示 :,a的二进制反码表示 :,a的二进制补码表示 :,00,(机内存储形式),b=a2 :,11,b的二进制原码表示 :,b的八进制数 :-016300,第4章_运算符和表达式ppt课件(全),4.4 赋 值 运 算,1赋值表达式,变量名=表达式,如 a3,b=2*a+10,2赋值语句,变量名=表达式;,如 a=3;,c=b=a+3;,右结合,第4章_运算符和表达式ppt课件(全),3赋值时数据类型的转换,在赋值语句,变量名=表达式;,中,当左右类型不同时,系统自动转换,,具体规则见表4.1。,第4章_运算符和表达式ppt课件(全),4复合赋值运算,+=、-=、*=、/=、%=、=、&=、=、|=,例如:,a+=3,等价于,a=a+3,x*=y+8,等价于,x=x*(y+8),x/=2*y-10,等价于,x=x/(2*y-10),a&=b,等价于,a=a&b,第4章_运算符和表达式ppt课件(全),4.5 关系表达式与逻辑表达式,关系运算符,1六种关系运算符,(大于)=(大于等于)(小于),=(小于或等于)=(等于)!=(不等于),注意:两字符间不可以加空格,,如:=就不能写成:、=、b,a+bb+c,(a=3)(b=5),ab)(b),关系表达式成立,其值为,1,;,关系表达式不成立,其值为,0,。,第4章_运算符和表达式ppt课件(全),【例4.1】分析下面程序的运行结果。,#include,void main(),float x,y=0.6;,y=y*11;,x=6+0.6;,if(x=y)printf(OK,x=y);,else printf(NO,x!=y);,程序运行结果:,NO,x!=y,#include,fabs(x-y)3”的逻辑表达式,可写为 a3|b-3),,若写成 a3|b-3,则是错误的。,第4章_运算符和表达式ppt课件(全),3逻辑表达式,在逻辑运算中,将非0值视为真、将0视为假。,第4章_运算符和表达式ppt课件(全),【例4.2】根据下列条件,写出C的逻辑表达式。,(1)条件“|x|10”。,逻辑表达式为,-10 x&x10。,注意,,不能写为-10 x=10&x=-99&xc&a+cb&b+ca。,第4章_运算符和表达式ppt课件(全),4.6 条件表达式与逗号表达式,4.6.1 条件表达式,1条件运算符,?:,2条件表达式,表达式1,?,表达式2,:,表达式3,例如 xb),?,a,:,b;,(2)求三个变量a、b、c的最大值。,解 s=(s=ab,?,a,:,b)c,?,s,:,c;,(3)对字符变量ch,若为小写字母,则改为大写字母,其余字符不变。,解 ch=(ch=a&ch0),?,printf(“%d”,x),:,printf(“%d”,-x);,第4章_运算符和表达式ppt课件(全),【例4.4】任意输入三个整数,按从大到小输出。,程序如下:,#include,void main(),int a,b,c,m,n,k;,scanf(%d%d%d,m=(m=ab?a:b)c?m:c;/*将a、b、c中的最大数赋给m*/,n=(n=ab?a:b)c?n:c;/*将a、b、c中的最小数赋给n*/,k=a+b+c-m-n;/*将a、b、c中的中间数赋给k*/,printf(%d%d%dn,m,k,n);/*从大到小输出三个数 */,程序运行情况:,3-5 9,9 3 -5,第4章_运算符和表达式ppt课件(全),4.6.2 逗号表达式,形式:,表达式1,表达式2,表达式n,结合性:从左向右,优先级:最低,逗号表达式的值:取最后一个表达式的值,例如:,(1)a=2+3,,,4*5;,(2)int a=2,c;,c=(b=a+,a+2);,(3)int a=2,c;,c=b=a+,a+2;,第4章_运算符和表达式ppt课件(全),
展开阅读全文