A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白月光 中级黑马   /  2014-5-20 14:48  /  1853 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

自增自减
1、++自增运算符:如a++,++a都等价于a = a + 1;
2、--自减运算符:如a--,--a都等价于 a = a -1;


虽然++a和a++等价的结果一样,但是运算过程确大不相同,以下举例说明:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     //int m = 10, n1, n2;
  5.     //n1 = m++;先将m的值赋给n1,然后m再做自增运算,所以此时,n1=10,m=11;
  6.     //n2 = ++m ;先将m做自增运算,然后在将运算后的m值赋给n2,所以此时,n2=11,m=11;

  7.     int a = 10,b =10, c, d;
  8.     c = (a++) + (++a);
  9.     //由上例n1=m++,n2=++m,m++=11可得出c=10+12;分析:前面括号所得值为10,而前面括号中的a经过自增运算后a的值为11,然后赋值给后面括号中的a,后面括号中的a经过自增运算后a的值为12,后面括号最后赋值为12;
  10.     d = (++b) + (b++);
  11.     //由上例n1=m++,n2=++m,++m=11可得出d=11+11;分析:前面括号所得值为11,而前面括号中的a经过自增运算后b的值为11,然后赋值给后面括号中的b,后面括号中的b先将值赋给后面括号,所以后面括号的值为11;
  12.     printf("c=%d\nd=%d\n",c,d);
  13.     return 0;
  14. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
wanzhu159 + 1

查看全部评分

9 个回复

倒序浏览
++a是先a=a+1然后再用a的值
a++是先用a的值再a=a+1
例如  int a=b=c=d=0;
       b=++a;  //b等于1,a等于1
       c=d++    //c等于0,d等于1
回复 使用道具 举报 0 1
嗯嗯    简明扼要   :handshake
回复 使用道具 举报 1 0
a++是a运算后加的、
++a是a加上后在做运算
回复 使用道具 举报 1 0
记得刚学c那会,被这个问题弄的很头疼。。。
回复 使用道具 举报 1 0
本帖最后由 李稳 于 2014-5-23 14:10 编辑

1、a++ 先赋值后加;2、++a 先加后赋值。
回复 使用道具 举报
chain 中级黑马 2014-5-23 22:05:29
7#
我学这个内容的时候,是这样想的,++a是先自增一次再干其他事情,而a++是先干其他事情,在自增一次。
回复 使用道具 举报
我这个新手赶脚这样理解比较好,+在前就先加了再说别的,+ 在后就做完事情再加。
回复 使用道具 举报
一开始也是头晕,后来慢慢就明白了,用多了就明白了
回复 使用道具 举报
这个很好懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马