C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3

上传人:E**** 文档编号:89422897 上传时间:2019-05-25 格式:PPT 页数:66 大小:560.50KB
返回 下载 相关 举报
C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3_第1页
第1页 / 共66页
C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3_第2页
第2页 / 共66页
C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3_第3页
第3页 / 共66页
C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3_第4页
第4页 / 共66页
C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版) 教学课件 ppt 作者 林小茶 C_ch3(66页珍藏版)》请在金锄头文库上搜索。

1、C 语言程序设计,林小茶 Email: ,第3章 运算符和表达式,3.1 表达式 3.2 算术运算符 3.3 赋值运算符 3.4 不同数据类型数据间的混合运算 3.5 关系运算符 3.6 逻辑运算符 3.7 增1/减1运算符 3.8 位逻辑运算符 3.9 其它运算符 3.10 指针类型与指针运算符,3.1 表达式,3.1 表达式,3.2 算术运算符,3.2 算术运算符,运行结果为: 1,1.750000,3,3.2 算术运算符,3.2 算术运算符,3.2 算术运算符,3.2 算术运算符,3.2 算术运算符,例3.2 验证超过表示范围的数。 #include “stdio.h“ void mai

2、n() short int a=32767; short int b=3; a=a+b; printf(“%dn“,a); ,运行结果为: -32766,3.2 算术运算符,运算符的结合性是指如果一个操作数左边和右边的两个运算符的优先级相同,应该优先计算的操作符。 例如:a+b-c 操作数b左右的运算符+和-的优先级相同, 那么,是先计算b-c,还是先计算a+b呢?C语言 规定双目算术运算符的结合性是自左至右,也就 是b先与左边a结合,再与右边c结合。所以是先 计算a+b,然后用a+b的结果减c。 双目运算符的结合性与数学运算并无不同。,3.3 赋值运算符,3.3 赋值运算符,系统根据规则自动

3、将两个不同数据类型的运算对象转换成同一种数据类型的过程。,3.4 不同数据类型数据间的混合运算,在C语言中,允许程序员根据自己的意愿将一种数据类型强制转换成另一种数据类型。 强制转换的格式为: (数据类型名) 操作对象,3.4 不同数据类型数据间的混合运算,3.4 不同数据类型数据间的混合运算,例3.3 同种类但长度不同的数据类型数据之间的安全转换。 #include “stdio.h“ void main() short int a=32767; int b; float c=123.4567; double d; b=a; b=b+3; d=c; d=d*1.0e17; printf(“b

4、=%dn“,b); printf(“d=%len“,d); ,运行结果: b=32770 d=1.23456e+019,例3.4 同种类但长度不同的数据类型数据之间的非安全转换。 #include “stdio.h“ void main() short int a=32767; char b; double c=1.234567e39; float d; b=a; d=c; printf(“b=%dn“,b); printf(“d=%len“,d); ,运行结果: b=-1 d=1.#INF00e+000,3.5 关系运算符,例3.5 区分关系运算符“=”和赋值运算符“=”。 #include

5、 “stdio.h“ void main() int x,y,z1,z2; x=2 ;y=2 ; z1=(x=y); z2=(x=y); printf(“%d,%dn“,z1,z2); ,运行结果: 2,1,例3.5 区分关系运算符“=”和赋值运算符“=”。 #include “stdio.h“ void main() int x,y,z1,z2; x=2 ;y=2 ; z1=(x=y); z2=(x=y); printf(“%d,%dn“,z1,z2); ,运行结果: 2,1,3.5 关系运算符,例3.6 多种运算符在一个表达式中混合使用。 #include “stdio.h“ void m

6、ain() int x,y,z,i,j; x=4;y=3;z=2; i=yz; j=xyz; printf(“%2d,%2d,“,i,j); printf(“%2d,“,zy=3); printf(“%2d,“,y+z=z+1); ,运行结果: 1,0,0,0,1,不好的写法!,例3.6 多种运算符在一个表达式中混合使用。 #include “stdio.h“ void main() int x,y,z,i,j; x=4;y=3;z=2; i=(yz); j=(xy)z); printf(“%2d,%2d,“,i,j); printf(“%2d,“,(zy)=3); printf(“%2d,“

7、,(y+z)=(z+1); ,运行结果: 1,0,0,0,1,好的写法!,3.6 逻辑运算符,3.6 逻辑运算符,3.6 逻辑运算符,3.6 逻辑运算符,3.6 逻辑运算符,3.6 逻辑运算符,3.6 逻辑运算符,x=y |x=0 若x=y成立,则表达式的值为真,不需要继续做x=0了。但是,若x=y不成立,由于x=0是个赋值表达式,表达式的结果很可能是错误的假设该表达式计算以前,x值为,y的值为,x=y的计算结果是,这时需要执行赋值x=0,表达式的结果仍然是,而实际上这时的x和y的值均为,又满足了x=y,这不是产生了矛盾吗?,注意:不要在一般的表达式中夹杂赋值运算,3.7 增1/减1运算符,3

8、.7 增1/减1运算符,3.7 增1/减1运算符,前缀表示法是先将i值增/减1,再在表达 式中使用;而后缀表示法是先在表达式中使 用i的值,再将i值增/减1。 例如: i=3; i=3; j=i+; j=+i; 结果 j的内容为3 j的内容为4 i的内容为4 i的内容为4,3.7 增1/减1运算符,3.7 增1/减1运算符,3.8 位逻辑运算符,按位取反 左移 右移 按位与 按位或 按位异或,3.8 位逻辑运算符,3.8 位逻辑运算符,3.8 位逻辑运算符,3.8 位逻辑运算符,3.8 位逻辑运算符,3.8 位逻辑运算符,3.8 位逻辑运算符,3.9 其它运算符,逗号表达式的求值过程是:先求解

9、表达式1, 再求解表达式2,并将表达式2的解作为逗号表 达式的解。 例如5,6 的值是6 z=(y=3,x*y) 与z =x*(y=3)是等价的 逗号运算符一般用于循环for语句,不提倡 使用在其它的表达式中。,3.9 其它运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,定义格式: 指针所指对象的数据类型 *指针变量名1,*指针变量名2,;,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,取地址,取内容,3.10 指针类型与指针运算符,3.10 指针类型与指针

10、运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,例3.10分析下面程序的运行结果。 #include “stdio.h“ void main() short int data,y,*pointer; data=7; pointer= ,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,3.10 指针类型与指针运算符,例3.11分析下面程序的运行结果。 #include “stdio.h“ void main() int beta=10; int *pointer,*q; pointer= ,3.10 指针类型与指针运算符,例3.12指针作为scanf函数的参数。 #include “stdio.h“ void main() int score; int *p= ,指针变量,指针p取地址,小结,小结,小结,小结,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号