资源描述:
《c语言教程 第3章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章表达式3.1表达式基础3.2算术表达式3.3赋值表达式3.4逻辑表达式3.5位运算表达式3.6其它表达式习题三3.1表达式基础3.1.1表达式的组成1.运算符运算符又称操作符,是一个符号,它指示在一个或多个操作数上完成某种运算操作或动作。C语言中,将除了输入、输出及程序流程控制操作以外的所有基本操作都作为运算处理,如赋值运算“=”、逗号运算“,”、括号运算“( )”。C语言的运算符按完成的运算操作可分为算术运算符、关系运算符、逻辑运算符、赋值运算符与其它运算符等,按参与运算符的操作数个数可分为单目运算符、双目运算符与三目运算符。(
2、1)算术运算符:+、−、*、/、%、++、− −(2)关系运算符:<、<=、==、!=、>、>=。(3)逻辑运算符:!、&&、
3、
4、。(4)位运算符:<<、>>、~、
5、、^、&。(5)赋值运算符:=、+=、−=、*=、/=、%=。(6)条件运算符:?:。(7)逗号运算符:,。(8)指针运算符:*、&。(9)求字节数运算符:sizeof。(10)强制类型转换运算符:(类型)。(11)其它运算符;· 、→、( )、[]等。2.操作数操作数是运算符的操作对象,可以是常量、变量、函数与表达式。常量、变量、函数本身就是简单表达式,从一般意义上讲
6、,C语言中所有操作数都是表达式。复杂表达式由运算符连接简单表达式形成。3.1.2表达式的书写C语言的表达式虽然来源于数学表达式,是数学表达式在计算机中的表示,但在书写时应该注意遵循C语言表达式书写的原则:(1)C语言的表达式只能采用线性的形式书写。例如:①应写成1/3+i+j*j*j。②应写成(a+b)/(c+d)*e+f。(2)C语言的表达式只能使用C语言中合法的运算符和操作数,对有些操作必须调用库函数完成,而且运算符不能省略。例如:①πr2应写成3.14159*r*r。②应写成0.5*a*b*sin(alph)。③
7、x-
8、y
9、应写成fabs(x-y)。④y+2X应写成y+pow(2,x)。3.1.3表达式的分类C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:①算术表达式,如a+b*2.0-3.0/5.0。②关系表达式,如x>=y,关系表达式可以认为是逻辑表达式的特殊情况。③逻辑表达式,如(x>=2)&&(x<=8)。④赋值表达式,如a=b=c=1。⑤条件表达式,如(a>b)?a:b。⑥逗号表达式,如a=2,b=a*a,c=sqrt(b)。1.运算的优先级运算的优先级是指运算执行的先后顺序。C语言将运算的优先级划分
10、为15级,第1级优先级最高,第15级优先级最低。初等运算( )、[ ]、→、·的优先级最高;单目运算!、~、++、−−、−、(类型)、*、&、sizeof的优先级次高;算术运算+、−、*、/、%再次之;然后是关系运算<、<=、==、!=、>、>=;再然后是逻辑运算&&、
11、
12、,条件运算式?:,赋值运算=、+=、−=、*=、/=、%=;逗号运算优先级最低;位运算优先级比较分散。可将优先级顺序简单记忆为算术、关系和逻辑,移位、位逻辑在中间。请参阅附录B。表达式求值时按运算的优先级别从高到低顺序进行,优先级相同的运算顺序由运算的结合性规定。通过
13、圆括号运算可以改变运算的优先顺序,先圆括号内,后圆括号外。2.运算符的结合性运算符的结合性是指,优先级相同的运算从左到右进行(左结合性)还是从右至左进行(右结合性),左结合性是人们习惯的计算顺序。C语言中,只有单目运算(!、~、++、--、-、*、&)、条件运算(?:)、赋值运算(=、+=、-=、*=、/=、%=)的结合性是右结合,其余运算为左结合。3.类型转换一般地,相应的运算只有相应类型的数据才能进行,不同类型数据进行运算时,要进行类型转换。类型转换有自动转换与强制转换两种方式。1)自动转换自动转换(又称隐含转换)由系统自动完成
14、,转换的规则如图3-1所示。图3-1中,横向箭头方向表示必定要进行的转换,即short型、char型数据必定先转换成int型,float型数据必定先转换为double型,再进行运算。纵向箭头方向表示类型自动转换的方向,请注意转换的方向是由低向高转换的,int型最低,double型最高。int型与unsigned型数据进行运算,int型转换成unsigned型;int型与long型数据进行运算,int型转换成long型;int型与double型数据进行运算,int型转换成double型。其它类推。这种转换是一种保值映射,在转换中数据的精度
15、不受损失。图3-1类型自动转换规则2)强制转换强制类型转换通过类型转换运算完成。格式:(类型名)(表达式)强制转换将表达式的类型强制转换成类型名指定的类型。例如x、y为float,则(int)(x+y)将实