zoukankan      html  css  js  c++  java
  • C语言—关于自增( a++和 ++a )的一些问题

    网上很多朋友老是搞不懂a++和++a的区别,老是弄错,对于初学者也很纠结,,那是因为没有总结,,总因为这样就是累加,但是却忽略了它的规律。

    下面我就总结一下这两者之间的规律,因为自减a——和——a跟自增的道理一样,这里只介绍自增

    首先大家要记住一句口诀:

                   “++a,加号在前,先加后用;

                     a++,a在前,先用后加”

    口诀记住了,不代表就什么都懂了,第二步,我们来举个例子让大家彻底理解这两句话的意思

    例如:(此处涉及一些结合性,这里不再多说)

    void test1(){

      int a=1;

      int b=a++;

      printf("a=%d,b=%d",a,b);--->a=2,b=1

    //分析:执行a++这句时   a++因为a在前,“先用后加”,“先用”-->故表达式(a++)=1,(先把a的值用了,即表达式a++的值为1),“后加”-->a加1后,a变为2.--打印a==2

        后再把a++赋值给b,即 打印b=1;                      

    }

    void test2(){

      int a=1;

         int  c=++a;

         printf("a=%d,c=%d ",a,c);--->a=2,c=2;

    //分析:执行++a这句时   ++a因为+在前,“先加后用”,“先加”-->a加1后,a变为2.“后用”-->故表达式(++a)=2,(先把a的值+1了,即表达式a++的值为2),--打印a==2

        后再把(++a)赋值给b,即 打印b=2;  

    }

    这上面是分开的写的,那么我们来一个两个在一起的练习

    void test3(){

      int a=1,d;

       d=a+++++a+++a+a++;

      printf("%d,%d",a,d);-->a=4,d=7

    //分析:根据结合性:(++)>(+),我们把这个表达式分一下,为:d=(a++)+(++a)+(++a)+(a++)

    根据以前的口诀,还有就是变后得值,后面就得用变后的值了,我们往后分析一下

                  (a=1)   a++   ++a    ++a     a++

                     表达式             1           3          4          4     --->这里每次都是利用上次的a值配合口诀得到的

                  a的值             2           3          4          5     -->记住,不管a遇到++a还是++a,经过一个就是+1.一直累加

                        打印 a=5

                        打印d=(a++)+(++a)+(++a)+(a++)

                           =   1    +   3     +  4   +   4      

                            = 12

    }

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/wxios/p/4170257.html
Copyright © 2011-2022 走看看