黑马程序员技术交流社区

标题: ios基础学习:C语言中的++a和a++的区别 [打印本页]

作者: 白月光    时间: 2014-5-20 14:48
标题: ios基础学习:C语言中的++a和a++的区别
自增自减
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. }
复制代码



作者: S捭K阖Y    时间: 2014-5-20 20:50
++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
作者: 白月光    时间: 2014-5-20 23:53
嗯嗯    简明扼要   :handshake
作者: 奇迹    时间: 2014-5-21 01:26
a++是a运算后加的、
++a是a加上后在做运算
作者: yangying514    时间: 2014-5-23 08:51
记得刚学c那会,被这个问题弄的很头疼。。。
作者: 李稳    时间: 2014-5-23 14:08
本帖最后由 李稳 于 2014-5-23 14:10 编辑

1、a++ 先赋值后加;2、++a 先加后赋值。
作者: chain    时间: 2014-5-23 22:05
我学这个内容的时候,是这样想的,++a是先自增一次再干其他事情,而a++是先干其他事情,在自增一次。
作者: 詹绪长    时间: 2014-6-1 18:53
我这个新手赶脚这样理解比较好,+在前就先加了再说别的,+ 在后就做完事情再加。
作者: 永远不会贬值    时间: 2014-6-1 19:54
一开始也是头晕,后来慢慢就明白了,用多了就明白了
作者: 但愿''专注..    时间: 2014-6-1 21:38
这个很好懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2