黑马程序员技术交流社区

标题: ++运算符的一个疑点 [打印本页]

作者: 从未有过的晴天    时间: 2014-6-17 20:44
标题: ++运算符的一个疑点
int a=0;
a=a++;
a的值为什么是0;
int a=0,b=0;
b=a++;
a的值是1;
作者: 从未有过的晴天    时间: 2014-6-17 20:46
哪位大神给指导一下
作者: L.sam    时间: 2014-6-17 20:55
a++是运算后再相加
作者: 黎志勇    时间: 2014-6-17 20:58
a=a++;的过程是
  1. temp = a;// a++先取值a,temp=a=0;
  2. a=a+1;//a自增,a=1;
  3. a=temp;//最后那个=赋值,a=temp=0;
复制代码

同理,b=a++;的过程是
  1. temp=a;//temp=a=0;
  2. a=a+1;//a=1;
  3. b=temp;//b=temp=0;
复制代码

作者: houyudong    时间: 2014-6-17 21:03
++自增表达式,他可以分为前自增和后自增
int a = 0;
a = a++;这句话的意思你可以这样理解,整体式一个赋值运算,把右边的值赋值给左边,右边当成是一个表达式,a将自增前的值赋给左边,然后在自增1,所以a=0;
int a=0;b=0;
b=a++;
结果应该是 b=0,a=1,因为这句表达式是将a自增前的值赋值给b,然后a在自增一位,这个时候a就加1了,
如果是b=++a;那么结果就是b=1.a=1,
前自增的特点是先进行自增然后在赋值,
后自增是先赋值后自增,希望你能明白,如果不懂可以私我,420098321.大家一起努力吧
作者: 华子    时间: 2014-6-17 22:06
一楼正解
作者: felixzr    时间: 2014-6-18 00:50
这个主要理解是先赋值还是先自增,我的你解释那个离等号近就先执行




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