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

来源:互联网 发布:手机淘宝满减怎么设置 编辑:程序博客网 时间:2024/06/06 03:06

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=6c=a ++ b;//错:a++和b是两个表达式,缺互相运算的操作符c=a +++ b;//对:a++ + b c=6c=a ++++ b;//错:a++++b是两个表达式,缺互相运算的操作符c=a +++++ b;//错:a++ ++ +b,a++非左值,不能再进行++操作c=a +++ b++;//对:a++ + b++,c=6c=++a + b;//对:++a + b c=7c=++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++运算符、增量操作、自增自减操作符、前置与后置自增自减操作符

0 0
原创粉丝点击