设为首页 加入收藏

TOP

2.5.2 算术运算符和算术表达式(2)
2013-11-12 22:32:22 来源: 作者: 【 】 浏览:178
Tags:2.5.2 算术 运算 符和 表达式

2.5.2  算术运算符和算术表达式(2)

4. 自增、自减运算符

自增1运算符记为++,其功能是使变量的值自增1;自减1运算符记为--,其功能是使变量值自减1。自增1和自减1运算符均为单目运算,都具有右结合性。使用如表2-9所示的算术运算符来进行自增自减运算。

表2-9  自增自减运算符

   

   

   

++

++aa++

前缀或后缀加1操作

--

--aa--

前缀或后缀减1操作

一般语法表明有两种使用++和--运算符的方式。

(1) 前缀方式:即运算符在运算量的左边,则运算量的值在其传送给表达式之前先做加1或减1操作。这就是所谓的"先增值(加1)后引用"或"先减值(减1)后引用"。

  1. ++i    //i自增1后再参与其他运算  
  2. --i     //i自减1后再参与其他运算 

(2) 后缀方式:即运算符在运算量的右边,则运算量的值在传送给表达式之后才改变(即做加1或减1操作)。这就是所谓的"先引用后增值(加1)"或"先引用后减值(减1)"。

  1. i++    //i参与运算后,i的值再自增1  
  2. i--     //i参与运算后,i的值再自减1 

如果++或--一个语句中的唯一运算符,则使用前缀形式和后缀形式的运算符实际上没有区别。

如果把++或--引用到表达式中,使用前缀方式和后缀方式产生的结果是有很大区别的。

  1. int i=5,x,y;  
  2. x=++i; //相当于x=i=i+1  
  3. y=i;  

执行结果为:x的值是6,i的值6,y的值是6。

  1. int i=5,x,y;  
  2. x=i++; //相当于x=i;ii=i+1  
  3. y=i;  

执行结果为:x的值是5,i的值是6,y的值是6。

增量和减量运算符的结合方向是"从右到左",其运算对象只能是整型变量而不能是常量或表达式。例如,5++或(x+y)++都是不合法的。

5. 各类数值型数据之间的混合运算

在设计C++语言程序时,在表达式中经常会遇到不同类型的运算量之间的运算问题,如整型、单精度型、双精度型数据进行混合运算等。遇到这些情况时,C++提供了两种类型转换方式把运算量转换成相同的数据类型,然后再进行运算。转换按数据长度增加的方向进行,以保证精度不降低。转换的方法有两种,一种是自动转换;一种是强制转换。

(1) 自动转换

自动数据类型转换也称为隐式类型转换,简称自动转换或隐式转换。隐式类型转换发生在不同数据类型的量混合运算时,由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相同类型后再进行运算,赋值时会把所赋值的类型转换为与被赋值变量类型一样。自动转换规则为由少字节类型向多字节类型转换,即:

① +、-、*、/运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为double型,然后进行运算。

② 如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。

③ int型和long型运算时,先把int型转换成long型后再进行运算。

④ 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

⑤ 字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。

⑥ char型和short型参与运算时,必须先转换成int型。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.5.2 算术运算符和算术表达式(1.. 下一篇2.5.2 算术运算符和算术表达式(3..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: