C语言程序设计_课件_第三章(适于清华谭浩强版)

上传人:我*** 文档编号:142088687 上传时间:2020-08-16 格式:PPT 页数:38 大小:431KB
返回 下载 相关 举报
C语言程序设计_课件_第三章(适于清华谭浩强版)_第1页
第1页 / 共38页
C语言程序设计_课件_第三章(适于清华谭浩强版)_第2页
第2页 / 共38页
C语言程序设计_课件_第三章(适于清华谭浩强版)_第3页
第3页 / 共38页
C语言程序设计_课件_第三章(适于清华谭浩强版)_第4页
第4页 / 共38页
C语言程序设计_课件_第三章(适于清华谭浩强版)_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《C语言程序设计_课件_第三章(适于清华谭浩强版)》由会员分享,可在线阅读,更多相关《C语言程序设计_课件_第三章(适于清华谭浩强版)(38页珍藏版)》请在金锄头文库上搜索。

1、第三章 运算符和表达式,3.1 表达式 3.2 算术运算符 3.3 赋值运算符 3.4 不同数据类型数据间的混合运算 3.5 关系运算符 3.6 逻辑运算符 3.7 增1/减1运算符 3.8 位逻辑运算符 3.9 其它运算符,3.1 表达式,表达式的概念 表达式是用运算符与圆括号将操作数连接起来所 构成的式子。C语言的操作数包括常量、变量、函数值 等。 根据表达式进行运算,得到的数值即为表达式的解。 表达式与简单语句 在C语言中,在一个表达式的后面加上分号“;”就构成了简单语句。 有意义的简单语句 无意义的简单语句,3.2 算术运算符,种类及运算 + - * / % 注意: 两个整数相除,结果

2、仍为整数,商向下取整。 取模运算符%实际上是数学运算的求余数运算,其两个操作对象都必须是整数 。 减法运算符还可以用做单目运算符,是取负 运算。其余操作符均为双目运算符。,算术表达式及算术运算符的优先级 算术表达式就是用算术运算符和圆括号将 操作数连接起来的式子。算术表达式的解就是 经过算术运算得到的表达式的值。 算术运算符的优先级与数学基本相同,即 先乘除,后加减。取模运算的优先级与乘除相 同。函数和圆括号的优先级最高。,注意: 算术表达式应能正确的表达数学公式。 例如:数学表达式是 3+x 2a 相应的C语言表达式应该是什么呢? 算术表达式的结果应该不超过其所能表示的 数的范围。例如,最大

3、的整型数是32767, 那么,32767+3就不会是正确的结果。而 32767L+3的结果是正确的,因为32767L是长 整型数。,算术运算符的结合性 运算符的结合性是指如果一个操作数左边和右边的两个运算符的优先级相同,应该优先计算的操作符。 例如:a+b-c 操作数b左右的运算符+和-的优先级相同, 那么,是先计算b-c,还是先计算a+b呢?C语言 规定双目算术运算符的结合性是自左至右,也就 是b先与左边a结合,再与右边c结合。所以是先 计算a+b,然后用a+b的结果减c。 双目运算符的结合性与数学运算并无不同。,3.3 赋值运算符,普通赋值运算符 赋值表达式的一般形式是: 变量名=表达式

4、赋值语句的一般形式是: 变量名=表达式; 赋值运算符的优先级小于算术运算符。 赋值运算符的结合性是自右至左, 以a=b=2为例,复合赋值运算符 把赋值运算符与算术、位逻辑、移位运算 符放在一起,就构成复合赋值运算符。 复合算术赋值运算符有5个+= 、- =、*=、/=、%=。 还有与移位和位逻辑结合的复合赋值运算符5个(=、 /* char c;*/ c=B; printf(c=%c,c+a-A); 运行结果: c=b,例3.2 #include stdio.h void main() char c; int i=0 x3241; printf(i=%cn,i); c=i; printf(c=

5、%dn,c); printf(i=%dn,i); 运行结果 i=A c=65 i=12865,3.5 关系运算符,所谓关系运算,实际上就是比较两个数值 的大小。那么,比较两个数值的大小的运算符 就是关系运算符。 关系运算符有六个、=、=、 =、!=。 由关系运算符连接起来的表达式就是关系 表达式。 关系表达式的解一般应为真或假,C语言 用整数1表示真,整数0表示假。,初学者经常会混淆关系运算符“=”和赋值运算符“=”,因此要注意区分这两个运算符。 例3.3 #include stdio.h void main() int x,y,z1,z2; x=2 ;y=2 ; z1=(x=y); z2=(

6、x=y); printf(%d,%dn,z1,z2); ,六个关系运算符中的“!=”和“=”的优先 级小于其余四个运算符。 关系运算符的优先级小于算术运算符, 大于赋值运算符。关系运算符的结合性均为自 左至右。 当多种运算符在一个表达式中同时使用时, 要注意运算符的优先级,防止记错运算符优先 级的最好方法是加圆括号。,例3.4 注意,不赞成按本例这样编写程序。 #include stdio.h void main() 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(%2

7、d,y+z=z+1); 运行结果为: 1,0,0,0,1,3.6 逻辑运算符,如果将“与、或、非”运算应用于逻辑值 (逻辑真和逻辑假)则称为逻辑运算。 C语言中的逻辑运算符有三个: 逻辑与 和i+;前缀与 后缀并无区别(减符号也一样)。但是,将 它们用在表达式中则前缀与后缀是有区别的。,前缀表示法是先将i值增/减1,再在表达 式中使用;而后缀表示法是先在表达式中使 用i的值,再将i值增/减1。 例如: i=3; i=3; j=i+; j=+i; 结果 j的内容为3 j的内容为4 i的内容为4 i的内容为4,注意: 增1/减1运算符的操作对象是一个变量 2+、-2以及(x/y)+均为非法 增1/

8、减1运算符的优先级高于算术运算符, 与单目运算符-(取负)、!(逻辑非)的 优先级相同,结合方向自右至左。 例如表达式 -i+ 等价于 -(i+) 副作用:printf(“ %d ,%d”,i,i+);在不同 的编译环境下结果有可能不同。 尽量不要在一般的表达式中将增1/减1运算 符与其它运算符混合使用。,3.8 位逻辑运算符, w1=10; w2=8; w3= w1|w2 ; w3的内容可以通过下式运算: 00001010 00001000 (按位或 |) 00001010 (结果),按位异或 按位或的运算规则是: 0 0=0 0 1=1 1 0=1 1 1=0 例如: char w1,w2

9、,w3; w1=10; w2=8; w3= w1w2 ; w3的内容可以通过下式运算: 00001010 00001000 (按位异或 ) 00000010 (结果),按位取反 按位取反的规则是: 0 = 1 1 = 0 注意: 对于位逻辑反来说,0 x7在16位机上的 表示是1111111111111000即0 xfff8,但在32位 机上的表示是0 xfffffff8,所以通常用0 x7 来表 示7的逻辑非,而不用0 xfff8或oxfffffff8。,移位运算符 左移 双目运算符,运算符右边的表达式表示移位的位数。 x=x2 表示把x进行左移以后赋值给x, 注意 不能只用x2 左移可以扩

10、大原数的倍数,左移位扩大 倍,左移位扩大倍,。右移可以缩小 原数的倍数。右移时,若符号位为,则右边 填零。若符号位为,根据机器不同分为算术 移位(填充)逻辑移位(填充)。,3.9 其它运算符,逗号运算符 表达式1,表达式2 逗号表达式的求值过程是:先求解表达式1, 再求解表达式2,并将表达式2的解作为逗号表达 式的解。 例如5,6 的值是6 z=(y=3,x*y) 与z =x*(y=3)是等价的 逗号运算符一般用于循环for语句,不提倡使 用在其它的表达式中。,求字节数运算符 sizeof是一个比较特殊的单目运算符,也 是一个非常有用的运算符,经常用于动态分 配空间。 其语法格式为: size

11、of(表达式) 表达式可以是变量名、常量、以及数据 类型名。,它的功能是:求表达式中变量名所代表的 存储单元所占的字节数;或是求表达式中常量 的存储单元所占的字节数;或是求表达式中的 数据类型表示的数据在内存单元中所占的字节 数。 sizeof(int)的结果是2, sizeof运算符比较灵活,同样是求整型int 数据所占的字节数,可以使用三种办法: (1) 求sizeof(int) (2) 求sizeof(10) (3) 使用int a; 求sizeof(a),例3.5 求各种有数据类型在内存中所占的位(bit)数。 #include stdio.h void main(c) printf(char =%d bitn,8*sizeof(char); printf(short int =%d bitn,8*sizeof(short int); printf(int =%d bitn,8*sizeof(10); printf(long int =%d bitn,8*sizeof(10L); printf(float =%d bitn,8*sizeof(float); printf(double =%d bitn,8*sizeof(2.3); printf(china=%d bitn,8*sizeof(china); ,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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