您的位置:首页 > 编程语言 > C语言/C++

C++基础---自增自减运算符

2015-08-15 20:27 399 查看

1. 自增自减运算符

1.1 自增自减运算符的定义

自增运算符:++

自减运算符:- -

自增自减运算符:都是单目运算符, 只能应用于变量,而不能用于常量或表达式。结合性与简单赋值运算符相同,但优先级高于任何双目运算符

1.2 自增自减运算符均有两种使用形式

前缀形式:即它们在操作数前,如:++x,- -x

后缀形式:即它们在操作数后,如:x++,x- -

前缀与后缀的表达式独立使用时:结果是没有区别

++a; //等价于a+=1; 或 a=a+1;
a++; //等价于a+=1; 或 a=a+1;
--a; //等价于a-=1; 或 a=a-1;
a--; //等价于a-=1; 或 a=a-1;


注:作为单一语句,前置与后置自增自减运算符的操作作用是相同的。

前缀与后缀在表达式中被引用时: 结果是不同的

(1)前置:前置运算符表示在赋值之前先进行自增或自减运算

例子:先使值加1或减1,然后再取值

int a = 1;
cout<<++a; =>2(a的值输出为2)
或:
int a = 1;
cout<<--a; =>0(a的值输出为0)


(2)后置:后置运算符表示在赋值之后再进行自增或自减运算

例子:先取值,然后再使值加1或减1

int a = 1;
cout<<a++; =>1(a的值输出为1)
cout<<a ;  =>2(a的值输出为2)
或:
int a = 1;
cout<<a--; =>1(a的值输出为1)
cout<<a ;  =>0(a的值输出为0)


注:作为表达式的结果,前置返回的是左值,后置返回的不是左值。

1.3 自增自减运算操作

前增量、后增量操作正确性判别

const int e = 8;
e++; //错:e是常量,值不能修改
8++; //错:8不是左值
int  a = 3;
int b = ++a;//对:a的值为4,b的值为4,相当于(a=3;) ++a;(a=4;) b=a;
int c = a+1;//对:a的值为4,c的值为5,a的值没发生自增或自减
int d = a++;//对:d的值为4,a的值为5,相当于b=a; a++;
a++ -= 2;//错:a++不是左值
++a += 5;//对:++a是左值,a的值为11,相当于(a=5;) ++a;(a=6;) a+=5
++(++a);//对:++a为左值,可执行++(++a)操作
++a++;//错:按优先级即++(a++),而a++非左值,不能做前置增量操作


1.4 自增自减操作符识别

++与- -是连体操作符: 如果分开写,则成两个独立的+或-了,所以中间不能有空格。如果有多于两个的+或-连写,则编译器按”贪吃法则“理解。所谓贪吃,是指只要能理解能成为操作符,就尽量多读入字符。

int a=1, b=5, c;
c=a + b;//对:c=6
c=a ++ b;//错:a++和b是两个表达式,缺互相运算的操作符
c=a +++ b;//对:a++ + b c=6
c=a ++++ b;//错:a++和++b是两个表达式,缺互相运算的操作符
c=a +++++ b;//错:a++ ++ +b,a++非左值,不能再进行++操作
c=a +++ b++;//对:a++ + b++,c=6
c=++a + b;//对:++a + b c=7
c=++a ++ b;//错:++a非左值,不能再进行++操作
c=++a +++ b;//错:++a非左值,不能再进行++操作


1.5 使用自增自减操作符的注意事项

表达式的值和变量值的区别:

以自增运算符为例,当自增运算符++作用于一个变量时,

例如:当 i = 3 时,

cout<<++i<<endl;
这个算术表达式的输出值为4,同时变量i的值也由原来的3改变为4。

cout<<i++<<endl;
这个算术表达式的输出值为3,但变量i的值由原来的3改变为4。


注:一般情况下,计算表达式后不改变变量的值,而自增自减运算符和运算符组成的表达式计算后,则改变变量的值,这称为运算符的副作用,这种运算符在计算表达式时,一定要注意区分表达式的值和变量的值。

前缀运算和后缀运算的区别:前缀运算是“先变后用”,而后缀运算是“先用后变”。

运算符的运算对象:自增自减运算符能作用于变量 , 而不能作用于常量或表达式。

注:因为自增自减运算符具有对运算量重新赋值的功能 , 而常量、表达式无存储单元可言。

运算符的结合方向:自增自减运算符的结合方向都是从右向左。

注:当自增自减运算符所在的表达式或语句中只含一种操作时(即单一表达式),则其前缀和后缀功能对程序的作用时一样的;而当含有两个或两个以上操作时,在考虑各个运算符的优先级别和结合性的基础上,则其前缀和后缀的功能对程序的作用时不一样的。

(1)为了提高程序的效率,需要用技巧把程序写得尽可能简洁一些,但这样有可能降低和谐的可能性和可理解性。

(2)可读性差的程序容易隐藏错误且难于纠正 ,不易维护,降低了程序的可靠性。

(3)人们在程序设计时遵守的基本规范是:可靠性第一,效率第二。为了保证可靠性,程序必须清晰易读,而表达式的清晰易读是十分重要的,因此,在程序设计中要慎重。

参考文献:

[1]《C++全方位学习》范磊——第五章

[2]《C++程序设计教程(第二版)》钱能——第四章

[3] 百度搜索关键字:C++运算符、增量操作、自增自减操作符、前置与后置自增自减操作符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: