本帖最后由 long 于 2013-5-13 16:15 编辑
我给楼主说得详细点:
int a = 3, b;
a = a++;
是将表达式a++的值赋给a, 但表达式a++的值是3,因此a = 3。自增运算符分两种:前自增(++位于变量名前面)和后自增(++位于变量名后面)。前自增表示先自增,再用自增后的变量计算表达式的值,后自增表示先用自增前的变量计算表达式的值,再自增变量。a = a++; 的效果相当于int t = a++; a = t; 。因为a = 3, 且是后自增,所以表达式a++的值是3,故 t = 3, 而a = t显然使得a = 3。在此过程中a++其实是自增的,只不过自增后又将自增前的值赋给a,所以a++感觉就没自加了。
在将a++赋给b的过程中,a显然自增了一次,a自增后的值当然是4,但b等于a自增前的值,即b = 3。
|