讲C运算符和表达式.ppt_第1页
讲C运算符和表达式.ppt_第2页
讲C运算符和表达式.ppt_第3页
讲C运算符和表达式.ppt_第4页
讲C运算符和表达式.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲,运算符与表达式,主要内容:运算符和表达式p54,表达式和C运算符 算术运算符和算术表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 条件运算符和条件表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式 强制类型转换运算符和表达式,重点:,掌握各种表达式,表达式,由运算符和运算对象组成的式子。 运算对象包括常量、变量、函数等。单个的常量、变量和函数也可以看作是一个最简单的表达式。,例:2+3 /*算术表达式 getch() /*函数 x=(a+b)/2-c /*赋值表达式,C运算符,C 运 算 符,算术运算符:+ - * / % + - 关系运算符: = = != 逻辑运算符:!& | 位运算符 : | & 条件运算符:? : 赋值运算符:= 及其扩展 逗号运算符:, 强制类型转换:类型 指向结构体成员运算符:. - 下标运算符: 指针运算符:* 取值&取地址 求字节数 :sizeof 其它:,不同类型的运算符之间有着不同的优先级关系,甚至相同类型的运算符之间也存在不同的优先级,共分为15个优先层次.,运算符的优先级,常用的几类运算符的优先级关系是: 逻辑非(!) 算术运算符 关系运算符 逻辑与(&) 逻辑或(|) 赋值运算符 逗号运算符,优先级 从上往下由高到低,基本算术运算符: + - * / % 优先级: -(负号) -* / % - + 结合方向:从左向右 注意点: “-(负号) ”可为单目运算符 两整数相除,结果为整数(舍去小数部分) %要求两侧均为整型数据,例 5/2 = 5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,例 5/2 = 2 5/2.0 = 2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),算术运算符和表达式,例a+b*c a+b-c a/b*c,只要运算项中有一个是实型,则结果为双精度实型,自增、自减运算符:+ - 作用:使变量的值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),例 j=3; printf(“j=%dn”,j+); printf(“j=%d”,j);,运行结果: j=3 j=4,算术运算符和表达式,自增、自减运算符:+ -,说明: + - 不能用于常量和表达式,如5+,(a+b)+ 优先级:- (负号) + - -* / % -+- 结合方向:自右向左,例 -i+ -(i+) int i=3,j; j=-i+; /j=-3,i=4,算术运算符和表达式,例4-1 自增运算符和自减运算符的实例 main() int a,b,c,d,i=5,j=5,k=5; a=+i*6; b=j+*6; printf(“a=%d,“,a); printf(“b=%d,“,b); printf(“k=%d,“,k-); printf(“k=%d“,-k); ,运行结果: a=36,b=30,k=5,k=3,例4-2 算术运算符优先级的实例 main() int a,b,i=5,j=5; a=-+i; b=-j+; printf(“a=%d,“,a); printf(“i=%d,“,i); printf(“b=%d,“,b); printf(“j=%d“,j); ,运行结果: a=-6,i=6,b=-5,j=6,翻到P60,类型转换之自动转换,不同类型转换的方向,例(double)a 将a转换成double类型 (int)(x+y) 将x+y的值转换成整型 (int)(6.5/5) 将6.5/5的值转换成int类型,种类:自动转换(即系统自动进行)和强制转换 说明:利用强制类型转换运算符将一个表达式转换成所需的类型 一般形式: (类型名) (表达式) 功能:把表达式的运算结果强制转换成类型说明符所表示的类型,强制类型转换,注意: 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加。 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。,强制类型转换,例(int)(5.4+3.2) 结果为8 (int)5.4+3.2 结果为8.2。,例(int)x+y 并不改变x的数据类型,例: main() float x; int i; x=3.6; i=int(x); printf(“x=%f,i=%d”,x,i); ,运行结果:x=3.600000,i=3,功能:判断关系运算符左右运算对象的大小关系 种类:= = != 优先级别: - (负号) + - -* / % -+ - = - = !=- -, 结合方向:自左向右 关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),例 int a=3,b=2,c=1,d,f; ab; (ab)=c; b+cb; f=abc;,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,注意区分“=”与“=”,关系运算符和表达式,例 若a=0; b=0.5; x=0.3; 则 a=x=b的值为,0,例 5278在C中是允许的, 值为,0,例 int i=1, j=7,a; a=i+(j%4!=0); 则a=,2,例 a0 结果为 A100 结果为,1,0,a=97; A=65,例4-3 关系运算符优先级的实例 main() int a,b,c; scanf(“%d%d%d”, ,种类:! & | 逻辑运算真值表,优先级: - (负号) + - !-* / % -+ - = - = !=-&- |- -,例 ab&xy a=b|x=y !a|ab,/ (a=x) & (x=b),/(ab)&(xy),/(a=b)|(x=y),/(!a)|(ab),注意:1、非0的整数实数以及非0的字符型数据代表“真”值,0和 0代表“假”值。,逻辑运算符和表达式,例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d,值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(8(4-(!0) 值为1,C语言中,运算量:0表示“假”,非0表示“真” 运算结果:0表示“假”,1表示“真”,翻到P66,例4-4 逻辑运算符优先级的实例 main() int a; scanf(“%d“, ,形式:表达式1,表达式2,表达式n 优先级:- (负号) + - -* / % -+ - - -, 逗号表达式的值:等于表达式n的值,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例: #include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(“x=%dn“,x); ,运行结果:x=3,3*5,a*4,a+5,逗号运算符和表达式,条件表达式:表达式1 ? 表达式2:表达式3 执行过程: 表达式1为真则条件表达式的值为表达式2; 为假则条件表达式的值为表达式3。 优先级:- (负号) + - !-* / % -+ - = - = !=-& |-? :- -, 结合方向:自右向左 条件运算符可嵌套,例 i=(5%2=1)?2:3,例 i=(6%2=1)?2:3,if(ab) max=a; else max=b;,结果:i=2,结果:i=3,例 x0?1:(x0?-1:0) /*x=-2 x=4,例 ab?a:cd?c:d ab?a:(cd?c:d),条件运算符和表达式,翻到P66,简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,复合赋值运算符 种类: += -= *= /= %= = = &= = |= 含义:变量名 其他运算符 = 表达式 变量名=变量名 其他运算符 表达式,例 a=3; c=d+2;,赋值运算符和表达式,说明: 优先级:- (负号) + - -* / % -+ - - 结合方向:从右向左 左侧必须是变量,不能是常量或表达式 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型 赋值表达式的值与变量的值相等,且可嵌套,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=12; a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等价于a=a+(a=a*(a=a-(a=a*3),赋值运算符和表达式,例4-5 赋值运算符优先级的实例 main() int a=3,b=5,c=2,d,e; floa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论