算术运算中的a++和++a的区别在运算的时候,a++会先备份一个a,然后再自增,++a是先自增,再备份。
结合赋值运算:
可以看出,赋值赋的是那个备份值。
备份指的是a在做值的交换时会在栈中开拓一个临时的副本空间存储。
int a = 1;
for(int i=1;i<=100;i++){
a = a++;
}
a == 1
int sum = m++ + ++n - n-- - --m + n-- - --m;
1 + 3 - 3 - 1 + 2 - 0
m==0 n==1 sum==2
理解备份这个概念还是相当有必要的,如:
a ++ 和a=a+1其实是不一样的,首先1是int类型的,a是byte类型的
a++自增其实等同于a += 1会自己提升bit位,自增完会自己去除无用bit位
而a = a+1,他是先运算,提升了bit位,但不会自己去除无用bit位,然后就赋值,但此时a已经是int类型了,所以会出错
运算自己本身是会自动转换表述范围的,但不会再去掉多余的bit位
类型小的向类型大的赋值,会报错
阿拓老师讲课真的太棒了,作为一个一直被前++后++折磨的小白听完之后都觉得很好理解了,Thanks♪(・ω・)ノ