C语言课件第三章运算符和表达式_第1页
C语言课件第三章运算符和表达式_第2页
C语言课件第三章运算符和表达式_第3页
C语言课件第三章运算符和表达式_第4页
C语言课件第三章运算符和表达式_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、2022年年3月月16日日IT Education & TrainingIT EducationC语言程序设计语言程序设计大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 单目单目运算符:只作用于一个运算对象的运算符;运算符:只作用于一个运算对象的运算符; 双目双目运算符:作用于两个运算对象的运算符。运算符:作用于两个运算对象的运算符。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月

2、月16日日IT Education大连软件职业学院大连软件职业学院 一一 除了求余运算符外,其余运算符均既可除了求余运算符外,其余运算符均既可整数运算,又可作浮点数运算。求余运算整数运算,又可作浮点数运算。求余运算符仅可作整数运算。符仅可作整数运算。 二二 两个整数相除的运算结果为一个整数。两个整数相除的运算结果为一个整数。 egeg:13/513/5 三三 加减运算符可以作字符运算。加减运算符可以作字符运算。 egeg:a+1a+1 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院A 不同级别:不同级别:在在中,其优先级别从高到低

3、依次为:中,其优先级别从高到低依次为: ( ) (括号最优先括号最优先) +,-,+,- (一元运算符一元运算符) *,/,% (二元运算符二元运算符) +,- (二元运算符二元运算符)B 同一级别:同一级别:按它们的结合性确定其优先次序按它们的结合性确定其优先次序 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 int i =3, j=3; printf(“%d,%dn”,+i,j+); 运行结果:运行结果: 运行后的

4、运行后的i,j 4 4,3 43 4,4 4 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院注意一:最长符号原则:注意一:最长符号原则:由于由于C C语言的运算符可由多个符号组成,语言的运算符可由多个符号组成, 如:如: + , - , & , | , -+ , - , & , | , -* * 那么那么 i+j i+j 是是 (i+)+j(i+)+j还是还是 i+(+j)?i+(+j)? “最长符号原则

5、最长符号原则”规定:从左算起的多个符号若符规定:从左算起的多个符号若符合合C C语言规定的法定符号,一律不得拆分。语言规定的法定符号,一律不得拆分。注意:尽量避免这样有歧义的写法注意:尽量避免这样有歧义的写法 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院注意二:注意二: EgEg: intinti i3;3; printf(“%d,%d”,i,i+);printf(“%d,%d”,i,i+); 尽量避免这样的写法尽量避免这样的写法 int i=3, j ;int i=3, j ; j= i+ ; j= i+ ; printf(“

6、%d,%d”,i,j) ;printf(“%d,%d”,i,j) ; 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院后置后置运算符到底运算符到底后后到哪?到哪?int i =3, j; j=i+ + i+ ; printf(“%d,%dn”,i,j); 运行后运行后i,j的值:的值:5,6 因为因为i+ 要等到加之后做,故要等到加之后做,故 j= 6,i由由3增到增到5。结论:结论:后置运算要后置运算要”后后”到本语句的其它动作之后。到本语句的其它动作之后。 运算符和表达式运算符和表达式2022年年3月月16日日IT Educat

7、ion大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 int a=1,b=2; a*b+5 b/a+a%b a+ + b- 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院, 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院判断:判断: 运算符和表达式运算符和表达式

8、2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院C语言中真与假的规定 非非0 0为真,为真, 0 0为假为假 ; 运算结果为真时用运算结果为真时用1 1表示;运算结果表示;运算结果为假时用为假时用0 0表示。表示。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式

9、运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 !(!(非非) ) 算术运算符算术运算符关系运算符关系运算符&和和 赋值运算符赋值运算符 关系运算符和逻辑运算符的优先级低于算术运算符,关系运算符和逻辑运算符的优先级低于算术运算符,高于赋值运算符高于赋值运算符,因此,因此, x+y=a+b与与(x+y)=(a+b)等价等价低低高高 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 1.在计算形如在计算形如(表达式表达式)&(表达式表达式)&的逻辑表达式的逻辑表达

10、式时,只要有一个表达式的值为假,那么整个表达式的值就为假。时,只要有一个表达式的值为假,那么整个表达式的值就为假。因此,语言规定在计算过程中先计算表达式,如果其值是因此,语言规定在计算过程中先计算表达式,如果其值是逻辑真或非,就接着计算表达式,如果第一个表达式为逻逻辑真或非,就接着计算表达式,如果第一个表达式为逻辑假,则可以判定整个表达式的值为逻辑假,其后的表达式不辑假,则可以判定整个表达式的值为逻辑假,其后的表达式不被计算。被计算。 2.在计算形如在计算形如(表达式表达式) (表达式表达式) ,先计算表达式,先计算表达式,如果其值为逻辑如果其值为逻辑“假假”或,就接着计算表达式,如果第一或,

11、就接着计算表达式,如果第一个为逻辑真的表达式就可判定整个表达式为逻辑真,其后的表个为逻辑真的表达式就可判定整个表达式为逻辑真,其后的表达式将不被计算。达式将不被计算。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院Eg:思考?思考? 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 1.二进制位与字节二进制位与字节 计算机系统的内存储器,是由许多称为字节的单元组成计算机系统的内存储器,是由许多称为字节的单元组成的,的,1个字节由个字节由8个二进制位(个二进制位(bit)

12、构成,每位的取值为)构成,每位的取值为0/1。最右端的那最右端的那1位称为位称为“最低位最低位”,编号为,编号为0;最左端的那;最左端的那1位称位称为为“最高位最高位”,而且从最低位到最高位顺序,依次编号。下图,而且从最低位到最高位顺序,依次编号。下图是是1个字节各二进制位的编号。个字节各二进制位的编号。 2.数值的原码表示数值的原码表示数值的原码表示是,数值的原码表示是,将最高位用作符号位(将最高位用作符号位(0表示正数,表示正数,1表示负数),其余各位代表数值本身的绝对值(以二进制形式表示负数),其余各位代表数值本身的绝对值(以二进制形式表示)的表示形式。表示)的表示形式。为简化描述起见,

13、本节约定用为简化描述起见,本节约定用1个字节表个字节表示示1个整数。个整数。 76543210 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院例如,例如,+9的原码是的原码是00001001 符号位上的符号位上的0表示正数表示正数 -9的原码是的原码是10001001。 符号位上的符号位上的1表示负数表示负数 3.数值的反码表示数值的反码表示数值的反码表示分两种情况:数值的反码表示分两种情况:(1)正数的反码:与原码相同。)正数的反码:与原码相同。例如,例如,+9的反码是的反码是00001001。(2)负数的反码:符号位为)负数的

14、反码:符号位为1,其余各位为该数绝对值的原码,其余各位为该数绝对值的原码按位取反(按位取反(1变变0、0变变1)。)。例如,例如,-9的反码:因为是负数,则符号位为的反码:因为是负数,则符号位为“1”;其余;其余7位为位为-9的绝对值的绝对值+9的原码的原码0001001按位取反为按位取反为1110110,所以,所以-9的反码是的反码是11110110。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院4.数值的补码表示数值的补码表示数值的补码表示也分两种情况:数值的补码表示也分两种情况:(1)正数的补码:与原码相同。)正数的补码:

15、与原码相同。例如,例如,+9的补码是的补码是00001001。(2)负数的补码:符号位为)负数的补码:符号位为1,其余位为该数绝对值的,其余位为该数绝对值的原码按位取反;然后整个数加原码按位取反;然后整个数加1。例如,例如,-9的补码:因为是负数,则符号位为的补码:因为是负数,则符号位为“1”;其余;其余7位为位为-9的绝对值的绝对值+9的原码的原码0001001按位取反为按位取反为1110110;再;再加加1,所以,所以-9的补码是的补码是11110111。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院5.数值在计算机中的表示

16、数值在计算机中的表示补码补码在计算机系统中,数值一律用补码表示(存储),原在计算机系统中,数值一律用补码表示(存储),原因在于:使用补码,可以将符号位和其它位统一处理;同因在于:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。时,减法也可按加法来处理。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院3.15 位操作位操作 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院1逻辑位运算逻辑位运算 逻辑位运算符逻辑位运算符 逻辑位运算用来对某一个或某一对二

17、进制位进行逻辑位运算用来对某一个或某一对二进制位进行操作。其中:操作。其中: 表示按位取反表示按位取反 & 表示按位与表示按位与 表示按位或表示按位或 表示按位异或表示按位异或 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院pqp&qpqp|qp000001010111100110111010按位与按位异或按位或按位与按位异或按位或 按位取反按位取反 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院10&2=?10&2=?102=? 运算

18、符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院移位运算计算实现操作数字中所有的二进制位按指定移位运算计算实现操作数字中所有的二进制位按指定的位数顺序向左或向右移位的位数顺序向左或向右移位移位运算包括左移位和右移位。移位运算包括左移位和右移位。移位运算的一般格式为移位运算的一般格式为 vnvn vn其中,其中,v v是操作数,可以是变量,也可以是表达式;是操作数,可以是变量,也可以是表达式;n n必须是正整数,表示要移动的位数必须是正整数,表示要移动的位数。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education

19、大连软件职业学院大连软件职业学院(1)(1)左移位运算左移位运算假设有变量假设有变量a a,左移位运算,左移位运算anan,表示将,表示将a a的各个二的各个二进制位顺序左移进制位顺序左移n n位,右端空出的位补位,右端空出的位补0 0,移出左,移出左端之外的位则舍弃。例如,设端之外的位则舍弃。例如,设a=25a=25,则,则a3a3为为200200: a a a3 anan,表示将表示将a a的各个二进制位的各个二进制位顺序右移顺序右移n n位,移出右端之外的位被舍弃,左端空出的位位,移出右端之外的位被舍弃,左端空出的位则补则补0 0或补或补1 1,这取决于具体的机器和被移位的数是有符,这取

20、决于具体的机器和被移位的数是有符号数还是无符号数。号数还是无符号数。 (1)(1)对无符号数进行右移时,左端空出的位一律补对无符号数进行右移时,左端空出的位一律补0 0; (2)(2)对用补码表示的有符号数进行右移时,有的机器采取对用补码表示的有符号数进行右移时,有的机器采取逻辑右移,有的机器则采取算术右移。逻辑右移,有的机器则采取算术右移。逻辑右移逻辑右移:不管是正数还是负数,左端空位一律补:不管是正数还是负数,左端空位一律补0 0;算术右移算术右移:正数右移,左端的空位全部补:正数右移,左端的空位全部补0 0;负数右移,左;负数右移,左端的空位全部补端的空位全部补1(1(即符号位即符号位)

21、 )。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院例如,设例如,设a=-32768(a=-32768(补码表示补码表示) ),则有:,则有: a a a2 a2 逻辑右移逻辑右移2 2位后,其值为位后,其值为81928192。 a2 a2 算术右移算术右移2 2位后,其值为位后,其值为-8192-8192。算术右移相当于除算术右移相当于除2 2运算运算。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 赋值表达式的形式:赋值表达式的形式:v ve eEg: a =

22、 10Eg: a = 10其中:其中:“”称为赋值符号或赋值运算符号;称为赋值符号或赋值运算符号;“”右边的右边的e e是一个表达式或常量;是一个表达式或常量;左边的左边的v v是一个变量或数组元素是一个变量或数组元素 赋值表达式的功能是计算赋值表达式的功能是计算e e的值并存放在的值并存放在v v中中 赋值表达式赋值表达式的的末尾加上分号末尾加上分号就是就是赋值语句赋值语句. . 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 语言提供了两种赋值运算符:语言提供了两种赋值运算符: 简单赋值运算符简单赋值运算符 即即“”,它必须连

23、接两个运算量,其左边只能是变量,它必须连接两个运算量,其左边只能是变量或数组元素,右边可以是任何表达式或数组元素,右边可以是任何表达式 Eg:判断正误?判断正误? xy+;xx+; y+x,x; 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 复合赋值运算符复合赋值运算符 复合赋值运算符有复合赋值运算符有10种,它们由赋值号种,它们由赋值号“”和另外一个和另外一个二元二元(双目双目)运算符组成,具有计算和赋值双重功能运算符组成,具有计算和赋值双重功能 复合赋值运算的一般格式为:复合赋值运算的一般格式为: 变量变量 双目运算符双目运

24、算符 = 表达式表达式 复合赋值运算符复合赋值运算符 当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。则可能出错。 例如,例如,x += 3 /* 等价于等价于x=x+3 */ y *= x + 6/* 等价于等价于y=y*(x+6),而不是,而不是y=y*x+6 */ 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院注意:注意:一一使用复合赋值运算符连接两个运算量时,要把右边使用复合赋值运算符连接两个运算量时,要把右边的运算量视为一个整体。的运算量视为一个

25、整体。例如例如 x*=y+5表示表示x=x*(y+5)而不是而不是x=x*y+5。二优先级:二优先级:所有的赋值运算符都处于同一优先级,且所有的赋值运算符都处于同一优先级,且优先级很低,优先级很低,仅比逗号运算符高仅比逗号运算符高而比其他所有的运算而比其他所有的运算符都低符都低结合性:结合性:从右到左。从右到左。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院赋值运算要求类型兼容赋值运算要求类型兼容 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院教材教材3.4节节 运

26、算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院eg: int a=3;eg: int a=3; double b; double b; b=a; b=a; 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院低低高高doublefloatlongunsignedintchar,short低低高高横向箭头表示必定的转换横向箭头表示必定的转换(两个(两个float型的数据运算,也型的数据运算,也先都化成先都化成double型除非各自型除非各自后缀后缀f。)。)纵向箭头表示当运算对

27、象类纵向箭头表示当运算对象类型不同时的转换方向。型不同时的转换方向。 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 #include void main( ) int a=5;float b=(float)3.9;double d;d=b;a=(int)b;printf(%dt%.2lfn,a,d); 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院d1?d

28、2:d3 例如:分析如下程序结果例如:分析如下程序结果 int a=3,b=5; ab?a:b 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 sizeof(类型说明符类型说明符)/(变量名变量名) Eg: 分析以下表达式值分别为多少?分析以下表达式值分别为多少? int a,b20; sizeof(a); sizeof(int); sizeof(b); sizeof(b1); 运算符和表达式运算符和表达式2022年年3月月16日日IT Education大连软件职业学院大连软件职业学院 Eg: 3+5,6+8Eg: 3+5,6+8 3 3* *5,a5,a* *4,a+54,a+5 表达式,表达式,表达式,表达式, , ,表达式表达式n n 逗号运算符的优先级是最低的;逗号运算符的优先级是最低的; 结合性:从左到右结合性:从左到右 运算符和表达式运算符和表达式2022年年3月月16日日IT

温馨提示

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

评论

0/150

提交评论