数据类型运算符表达式分析.pptVIP

  • 0
  • 0
  • 约8.71千字
  • 约 55页
  • 2019-11-06 发布于广东
  • 举报
大连轻工业学院 于晓强制作 自动转换遵循以下规则: 1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。 3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。 4) char型和short型参与运算时,必须先转换成int型。 5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入(赋值给int时,全舍掉)。 大连轻工业学院 于晓强制作 大连轻工业学院 于晓强制作 隐式类型转换举例 char ch; int i; float f ; double d; result=ch/i+f*d-f+d; 运算次序为: (1)ch被转换整型,float型的f被转换为double型。 (2)ch/I的结果被转换为double型,因为f*d是double型。 (3)最后的结果是double型,因为在运算之前两个操作数均为double型 大连轻工业学院 于晓强制作 强制类型转换 强制类型转换是通过类型转换运算来实现的。 其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 例如: (float) a 把a转换为实型 (int)(x+y) 把x+y的结果转换为整型 在使用强制转换时应注意以下问题: 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 大连轻工业学院 于晓强制作 强制类型转换举例 【例3.13】 main() { float f=5.75; printf((int)f=%d,f=%f\n,(int)f,f); } 大连轻工业学院 于晓强制作 强制类型转换举例 main() { float a; int c ,b; a=2.5,b=5; c=(int)a+b; printf(%d, %d ,a,c); } 大连轻工业学院 于晓强制作 3.8算术运算符与算术表达式 C语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达式使C语言功能十分完善。这也是C语言的主要特点之一。 C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。 大连轻工业学院 于晓强制作 3.8.1 运算符简介 运算符的几个属性: 操作数: 参加操作的对象 “目”: 操作数的个数 单目、双目、三目 结合性: 从左向右:先左后右 从右向左:先右后左 优先级: 大连轻工业学院 于晓强制作 C语言运算符分类 大连轻工业学院 于晓强制作 3.8.2 算术运算符和算术表达式 基本的算术运算符(+、-、*、/、%) *、/、%:第三优先级 +、-:第四优先级 注意: 两个整数作除法,结果“向零取整”:5/3=1,56/10=5,78/10=7; 参加除求余以外的算术运算的操作数有一个是实数,则结果为“double”型的。 参加“求余%”运算的运算对象必须为“整数”:5%3=2,15%3=0,7%9=7; 大连轻工业学院 于晓强制作 算术表达式和运算符的优先级与结合性 算术表达式:算术运算符+操作数 优先级: a-b*c 等价于 a-(b*c) a-b+c 等价于 (a-b)+c 结合性 x-y+z 等价(x-y)+z 左结合 x=y=z 等价 x=(y=z)右结合 如果一个算术运算符的两侧的数据类型不相同,自动进行类型转换。 大连轻工业学院 于晓强制作 4.自增、自减运算符(++、--) 自增1,自减1运算符: 自增1运算符记为“++”,其功能是使变量值自增1。 自减1运算符记为“--”,其功能是使变量值自减1。 自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式: ++i : i自增1后再参与其它运算。 --i : i自减1后再参与其它运算。 i++ : i参与运算后,i的值再自增1。 i-- : i参与运算后,i的值再自减1。 大连轻工业学院 于晓强制作 自加、自减运算符应用举

文档评论(0)

1亿VIP精品文档

相关文档