int a=1;
int b=a++;
这种情况就是先使用a的值,那b就等于1,然后a再自增变成2。
int a=1;
int b=++a;
这种就是a先加1变成2,再赋值给b,b就等于2。
两种情况下a都会加一变成2,+在前就先加1再赋值给b,+在后就先赋值给b,他本身再加1(此时b与他无关了)。
不知道你能不能理解
x++出现的地方,x的内存地址不做改变,该语句执行完毕后才自加。好比领导告诉秘书,我要开会了,等这个会议结束了,你把稿子改一下再公布。
++x则是先自加,再参与计算。例如:我要开会了,你先把稿子改一下,我要在会上讲。
因此整个计算顺序是:
1、先执行 ++x ,x=4;
2、再执行 x+x, 结果为8;
3、最后x自加。
当然,这个代码实际上是不稳定的,不同编译器结果可能不同。
这种代码的行为是未定义的,在不同编译器上得到结果不一样,不要浪费时间在研究这种代码上