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

    }

  • 相关阅读:
    读邮件正文
    收邮件
    算法 字符串转换为以为数组
    获取下拉框的值
    thinphp 模版标签中 除了volist 和 if 其余的标签中的变量不需要$符号
    php 时间戳处理 自定义时间戳
    jquery 根据json 生成数据 根据生成的数据选择对应的
    php qrcode 二维码 扫描后多行在软件中输出问题
    数组转换为字符串
    浏览器的同源策略
  • 原文地址:https://www.cnblogs.com/wxios/p/4170257.html
Copyright © 2011-2022 走看看