int x,y;
x=1;
y=x++;
运行结束后,x=2; y=1;
int x,y;
x=1;
y=++x;
此时,x=2,y=2;
实际上,x++和++x一样,都相当于x=x+1;
那为什么两个代码运行结果y不同呢?
变量自增特点:两段代码初始相同,都开辟了两个变量空间x和y,其中,x赋值1,变量空间内存储常量1,而变量x自增时,并不是直接在存储空间内进行,而是将x的值拿出来,再从常量缓冲区取1,与之相加,再放回x的存储空间内。
x在运算的时候,会产生一个临时的副本空间(备份),而这个备份值就是运算时x变量空间内的值,用来赋给别的变量。
区别:
x++:先备份,后自增
++x:先自增,后备份
在y=x++;和y=++x这一步,两者的区别就显现出来了:
y=x++; //++在后,先赋值,再自增,故y=1
y=++x; //++在前,先自增,再赋值,故y=2;