1、运算符与表达式概述与分类Teacher teaching designCONTENTS 目 录C运算符简介运算符的结合性和优先级表达式案例分析 仿真演练C运算符简介PART 01C运算符简介语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语言的运算符所没有的,因此也增加了语言的复杂性。C运算符简介运算类型运算符说明算术运算符+-*/%+-针对数值进行算术运算关系运算符=!=进行比较大小的运算逻辑运算符!&|进行条
2、件的组合判断位运算符|&对二进制位进行处理赋值运算符=将表达式之值赋值给变量条件运算符?:根据条件判断结果返回相应值逗号运算符,多个表达式的组合强制类型转换运算符(类型名)进行不同类型数据的转换指针运算符*&指针类型特有的运算下标运算符 取数组的元素值分量运算符-用于结构体中成员的引用求字节运算符sizeof求变量存储的字节数知识拓展:按参与运算的对象个数,C语言运算符可分为:单目运算符(如取正、取负、自增、自减、逻辑非!),双目运算符(如+,-)和三目运算符(如?:)运算符的结合性和优先级PART 02运算符的结合性和优先级(1)所谓结合性是指当一个操作数两侧的运算符具有相同的优先级时,该操
3、作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是语言的独有概念。在C语言的运算符中,所有的单目运算符、条件运算符、赋值运算符及其扩展运算符,结合方向都是从右至左,其余运算符的结合方向是从左至右。例如:下面是一个合法的C算术表达式:a*b/c-1.5+aC语言规定了运算符的结合性和优先级。在表达式求值时,先按运算符的优先级别高低次序执行。如果一个运算对象两侧的运算符优先级别相同,则按算术运算的结合性原则,结合方向是“自左向右”。如果一个运算符的两侧的数据类型不同,则按自动转换规则,转换为相同类型,再运算。(2)各类运算符优先级的
4、比较,运算符的优先级:参见书本附录。语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。优先级相同时,则按运算符的结合性所规定的结合方向处理。运算符的结合性和优先级表达式PART 03表达式表达式(1)表达式的概念用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子,称为表达式。单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。(2)表达式求值C语言规定,对表达式求值时,按运算符的优先级别高低,从高到低进行运算。按运算符的优先级高
5、低次序执行。例如,先乘除后加减。如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。例如,算术运算符的结合方向是“自左至右”,即:在执行“a b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。案例分析 仿真演练PART 04案例分析 仿真演练1、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。A)2.500000B)2.750000C)3.500000D)0.0000002、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=A+6-3;后,c2中的值为()。A)D B)68C)不确定的值D)C3、表达式18/4*sqrt(4.0)/8值的数据类型为()。A)intB)floatC)doubleD)不确定