《C语言运算符与表达式.pptx》由会员分享,可在线阅读,更多相关《C语言运算符与表达式.pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章 运算符与表达式2014年3月254.1 基本概念n1 1、运算符、运算符n运算符运算符(operator)(operator)也称为操作符,对程序也称为操作符,对程序中的数据进行运算。参与运算的数据称为中的数据进行运算。参与运算的数据称为操作数操作数(operand)(operand)。n运算符是运算符是C C语言里用于描述对数据进行运算语言里用于描述对数据进行运算的特殊符号。的特殊符号。C C语言有三大运算符:算术、语言有三大运算符:算术、关系与逻辑、位操作。关系与逻辑、位操作。Page 2n对于运算符,应注意以下几方面。对于运算符,应注意以下几方面。n(1)(1)运算符的功能和语义
2、。运算符的功能和语义。n(2)(2)运算符的操作数。每个运算符对其操运算符的操作数。每个运算符对其操作数的个数、类型和值都有一定限制。作数的个数、类型和值都有一定限制。n(3)(3)运算符的优先级运算符的优先级(precedence)(precedence)。每个。每个运算符都有确定的优先级。运算符都有确定的优先级。n(4)(4)运算符的结合性运算符的结合性(associativity)(associativity)。n见课本表见课本表4.1 C4.1 C语言的运算符语言的运算符Page 32、表达式n表达式是由运算对象、运算符按照表达式是由运算对象、运算符按照C C语言的语言的语法规则构成的
3、符号序列。表达式可以通语法规则构成的符号序列。表达式可以通过运算产生一个结果或完成某种操作。过运算产生一个结果或完成某种操作。n表达式是由常量、变量、函数和运算符组表达式是由常量、变量、函数和运算符组合起来的式子。合起来的式子。n一一个表达式有一个值及其类型。个表达式有一个值及其类型。n表达式可分为算术表达式、关系表达式、表达式可分为算术表达式、关系表达式、逻辑表达式等。逻辑表达式等。Page 4运算符运算符和表达式的分类和表达式的分类n1 1运算符的分类运算符的分类n 按在表达式中与运算对象的关系(所需按在表达式中与运算对象的关系(所需要运算对象的个数)可以分为:要运算对象的个数)可以分为:
4、n单目运算符单目运算符n双目运算符双目运算符n三目运算符三目运算符Page 5Page 6 按它们在表达式中所起的作用又可以分为:算术运算符:+、-、*、/、%赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、=、=自增自减运算符:+、-关系运算符:、=、=、!=逻辑运算符:!、&、|条件运算符:?:位运算符:、&、|、逗号运算符:,其它运算符:()、-、.、(类型名)、*、&、sizeof4.2.1 算术运算符Page 7+:加法运算符-:减法运算符*:乘法运算符/:除法运算符 当运算对象均为整数时运算结果也为整数。%:求余运算符(模运算符)。要求%两侧运算对象均为整型数据。算术运算
5、符均为双目运算符,均具有左结合性。*、/、%的优先级为3级,+、-的优先级为4级。二算术表达式n见课本见课本 5454页页Page 84.2.2 赋值运算n1 1赋值运算符赋值运算符n赋值符号赋值符号“=”=”就是赋值运算符,其功能是就是赋值运算符,其功能是将赋值运算符将赋值运算符“=”=”右侧表达式的值求出并右侧表达式的值求出并将结果赋值给将结果赋值给“=”=”左侧的变量。左侧的变量。n赋值运算符的优先级很低,仅高于逗号运赋值运算符的优先级很低,仅高于逗号运算符,为右结合性。算符,为右结合性。Page 9n赋值表达式赋值表达式n用赋值运算符将一个变量和一个表达式连用赋值运算符将一个变量和一个
6、表达式连接起来的符合接起来的符合C C语言语法的式子称做赋值表语言语法的式子称做赋值表达式。达式。n它的一般形式为:它的一般形式为:n变量名变量名 =表达式表达式n赋值表达式的结果是赋值号右侧的表达式赋值表达式的结果是赋值号右侧的表达式的值。的值。Page 10二复合赋值运算符n在在赋值运算符赋值运算符“=”=”之前加上其它一些双目运算符之前加上其它一些双目运算符可以构成复合赋值运算符,用于完成运算、赋值可以构成复合赋值运算符,用于完成运算、赋值组合操作。组合操作。nC C语言中复合语言中复合赋值表达式的赋值表达式的一般形式为:一般形式为:n变量变量 双目运算符双目运算符=表达式表达式n其中其
7、中“运算符运算符”可以是:可以是:n+、-、*、/、%、|、&、n所构成的复合赋值运算符是:所构成的复合赋值运算符是:n+=+=、-=-=、*=、/=/=、%=%=、|=|=、&=&=、=、=n所有的赋值运算符包括复合赋值运算符的优先级所有的赋值运算符包括复合赋值运算符的优先级全部相同,均为右结合性。全部相同,均为右结合性。Page 11赋值运算的类型转换n见课本见课本5555页页Page 124.2.3 强制类型转换运算n表达式一般形式:表达式一般形式:n(类型说明符)(表达式)(类型说明符)(表达式)n例如:例如:n(floatfloat)a a 把把a a转换成实型转换成实型Page 1
8、34.2.4 自增自减运算一自增自减运算符、表达式一自增自减运算符、表达式F+:自增运算符,使变量的值增加:自增运算符,使变量的值增加1 1。F-:自减运算符,使变量的值减少:自减运算符,使变量的值减少1 1。自增、自减运算符均为单目运算符,优先级自增、自减运算符均为单目运算符,优先级为为2 2,具右结合性,具右结合性。Page 14自增、自减运算符都有两种用法:n前前置置运算:将运算:将+或或-运算符置于变量之前,运算符置于变量之前,一般形式为:一般形式为:+变量、变量、-变量。变量。n其功能是使变量的值增(减),然后再其功能是使变量的值增(减),然后再以变化后的变量值参与其它运算,即先增以
9、变化后的变量值参与其它运算,即先增减、后运算。减、后运算。n后置后置运算:将运算:将+或或-运算符置于变量之后,运算符置于变量之后,一般形一般形 式为:变量式为:变量+、变量、变量-。n其功能是变量先参与其它运算,然后再使其功能是变量先参与其它运算,然后再使变量的值增(减),即先运算、后增减。变量的值增(减),即先运算、后增减。Page 15例题4.5Page 164.2.5 关系运算符n用来比较两个量的运算符用来比较两个量的运算符n关系运算符的值只能是关系运算符的值只能是0 0或或1 1。n关系运算符的值为真时,结果值都为关系运算符的值为真时,结果值都为1 1。n关系运算符的值为假时,结果值
10、都为关系运算符的值为假时,结果值都为0 0。n优先级优先级n(1 1)前)前4 4种关系运算符的优先级别相同,种关系运算符的优先级别相同,后两种也相同。前四种高于后两种。后两种也相同。前四种高于后两种。n(2 2)关系运算符的优先级低于算术运算)关系运算符的优先级低于算术运算符符n(3 3)关系运算符的优先级高于赋值运算符)关系运算符的优先级高于赋值运算符Page 17运算符名称示例功能小于aba小于b时返回真;否则返回假=小于等于a大于aba大于b时返回真;否则返回假=大于等于a=ba大于等于b时返回真;否则返回假=等于a=ba等于b时返回真;否则返回假!=不等于a!=ba不等于b时返回真;
11、否则返回假Page 18逻辑运算符n对逻辑值进行运算的运算符就是逻辑运算对逻辑值进行运算的运算符就是逻辑运算符符。表示。表示操作数之间的逻辑关系,它们是操作数之间的逻辑关系,它们是!(!(逻辑非逻辑非)、&(&(逻辑与逻辑与)、|(|(逻辑或逻辑或)。逻。逻辑运算的结果仍然是逻辑值。辑运算的结果仍然是逻辑值。n逻辑非逻辑非(!)(!)是单目运算符,它对操作数进行是单目运算符,它对操作数进行取反运算。当操作数为非取反运算。当操作数为非0(0(逻辑真逻辑真)时,!时,!运算后结果为运算后结果为0(0(逻辑假逻辑假)。反之,若操作数。反之,若操作数为为0(0(逻辑假逻辑假),!运算后结果为运算后结果
12、为1(1(逻辑真逻辑真)。n注意,所有非注意,所有非0 0的值在逻辑上都作为的值在逻辑上都作为“真真”Page 19逗号运算n将两个或多个表达式连接起来的,表示顺将两个或多个表达式连接起来的,表示顺序求值。用逗号连接起来的表达式称为逗序求值。用逗号连接起来的表达式称为逗号表达式。号表达式。n逗号表达式的一般形式:表达式逗号表达式的一般形式:表达式1 1,表达式,表达式2 2,表达式,表达式n n。n求解过程:自左向右,求解表达式求解过程:自左向右,求解表达式1 1,求解,求解表达式表达式2 2,求解表达式求解表达式n n。整个逗号表达整个逗号表达式的值是表达式式的值是表达式n n。n例如:例如
13、:a=3a=3+5 5,6+86+8;Page 20条件运算表达式为:表达式表达式为:表达式1 1?表达式?表达式2 2:表达式:表达式3 3先求解表达式先求解表达式1 1,若,若其值为真(非其值为真(非0 0)则将表)则将表达式达式2 2的值作为整个表达式的取值,的值作为整个表达式的取值,否则(表达式否则(表达式1 1的值为的值为0 0)将表达式)将表达式3 3的值作为的值作为整个表达式的取值。整个表达式的取值。例如例如:1 1、max=(ab)?a:bmax=(ab)?a:b就是将就是将a a和和b b二者中较大的一个赋给二者中较大的一个赋给maxmax。2 2、min=(ab)?a:bm
14、in=(ab)?a:b max=(ab)?a:b 可以写成可以写成:max=ab?a:b:max=ab?a:b2 2、条件运算符?和:是一对运算符,不能分、条件运算符?和:是一对运算符,不能分开使用开使用3 3、条件运算符的结合方向是自、条件运算符的结合方向是自右右至左至左如:如:ab?a:cd?c:d ab?a:cd?c:d 可写成:可写成:ab?a:ab?a:(cd?c:dcd?c:d)Page 22实训四 运算符与表达式课本课本6363页,完成页,完成 1 1、验证实验(、验证实验(1 1)2 2、分析实验,把结果记录、分析实验,把结果记录在表中。在表中。Page 23#includevoid main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);