自加、自减运算符和逗号运算符

来源:互联网 发布:淘宝如何投诉快递公司 编辑:程序博客网 时间:2024/04/29 16:32

自加、自减运算符和逗号运算符

转自:http://gnhk.blog.sohu.com/43268073.html

 

一、 自加(++)、自减(--)运算符是由汇编指令引伸而来的两个单目运算符,应该说它们也属于算术运算符,其使用格式如下:

变量名++    或   ++变量名

变量名--    或   --变量名

它们的作用是使变量的值增1或减1,其中变量的类型可以为整型、实型和我们以后要学的字符型和指针变量。

语法规则和注意事项:

一、++和--的前后只能是单个变量形式,不能是常量或一般的表达式形式;

如:int a=1;

    a++;/* 变量a的值已经增1,变成了2。写成++a;也可以。*/

    --a;/* a的值已经减1,又变成了1。写成a--;也可以。*/

错误格式:(a+1)++;/*自加或自减前后必须为单个变量,不能为表达式。*/

          --3;   /*自加或自减前后必须为单个变量,不能为常量*/

二、 ++和--运算级别:

   ++和--的运算级别在我们当前所接触的运算符号中低于圆扩弧(),与正(+)和负(-)同级别,高于其它所有的算术符号和赋值符号。如下:

最高级别:()

次高级别:++ -- +(正) -(负)        (同级别自右向左运算)

第三级别:  *  /  %                   (同级别自左向右运算)

第四级别:  +(加)  -(减)           (同级别自左向右运算)

最低级别:  =  +=  -=  *=  /=  %=     (同级别自右向左运算)

注意:只有同级别运算符号结合在一起时,才有运算方向问题,不同级别只有先高后低的概念。

三、 自增(++)和自减(--)运算符作为前缀和后缀的区别:

  假定有一变量a,若仅仅是使其值增1的话,采用a++(后缀形式)或++a(前缀形式)两种形式均可;

减1的话采用a--或--a都可

但对于表达式整体而言,它们的值却有一定差别。这种差别是由编译器对前缀形式和后缀形式做不同处理造成的,在此不必探究其理论含义,只记住相应的变化规律即可。示例如下 :

注意:若有式子a++(其它任何形式的表达式均是如此),当我谈到变量,便是指纯粹的a本身;当我谈到式子时,便是指a++这3个符号整体。

1.++、--作为前缀:

main()

{   int a=1,b=5;

      ++a;/*此时变量值增1为2,表达式的值也为2*/

      ++a;/*此时变量值增1为3,表达式的值也为3*/

           /*结论:当++作为前缀时,变量和表达式始终同值*/

      --b;/*此时变量值减1为4,表达式的值也为4   */

      --b;/*此时变量值减1为3,表达式的值也为3   */

           /*结论:当--作为前缀时,变量和表达式始终同值*/

  }

2.++、--作为后缀:

main()

{   int  a=1,b=5;

    a++;/*此时变量值增1为2,表达式的值为1*/

    a++;/*此时变量值增1为3,表达式的值为2*/

         /*结论:当++作为后缀时,表达式的值始终比变量小1*/

    b--;/*此时变量值减1为4,表达式的值为5*/

    b--;/*此时变量值减1为3,表达式的值为4*/

         /*结论:当--作为后缀时,表达式的值始终比变量大1*/

通过观察上面两个程序段可得出以下结论:

〈1〉++和--无论放在变量前面或后面,对变量本身的影响是一样的,即变量都要无条件地增1或减1,所以,如果我们仅仅是为了将变量的值增1或减1,++和--放在变量前面或放在后面都无所谓;

〈2〉当++或--放在变量前面时,变量和表达式始终同值,即二者的变化规律是一样的;

〈3〉当++或--放在变量后面时,表达式的值始终比变量滞后一次变化,即表达式的值始终是变量变化之前的值,任何时候二者之差必为1。

谈到这里,你可能有很深的困惑:变量我知道,是在内存中开辟的空间,我们可将表达式的值存放在里面,自加自减我也知道,不过是将变量的值加1或减1而已,但象a++这样的式子,它所谓的表达式的值有什么用?我又该怎么用呢?

毋须讳言,这样的困惑作者也曾有过。实际上在编写程序时,我们不必考虑表达式整体值的问题,如果用到的;话通常是为了简化代码或提高设计技巧,我在以后的某些编程题中会向你展示(当然你可以采用自己容易理解的形式),现在举个小示例,让你加深理解。如下:

   int a,b=1;

   a=b++;

   问:a、b的值分别是多少?

原创粉丝点击