[cord]
int i=1;
i=i++;
print(i);
[/cord]打印出来的为什么是1而不是2?

解决方案 »

  1.   

    i++是这样的,一上来i=1;
    在做i=i++之前,i先把它的值赋给一个临时变量比如说叫x,此时i=〉x;
    然后i++,这时候i=2了;
    但怎么体现“先操作后自增”呢?奥秘就在这:最后再把x赋给i,x=〉i,所以这个时候i又等于1了。
    咱们防止混淆,可以这样int i = 1; 
    a = i++; 
    print(a);一上来i=1;
    在做a=i++之前,i先把它的值赋给一个临时变量x,此时i=〉x,x=1了;
    然后i++,这时候i=2了;
    最后再把x赋给a,x=〉a,所以这时a=1。所以表面上看上去是先做了赋值操作 之后再作自增操作!
    以上仅供参考
      

  2.   

    很简单  把这个代码给你拆开看你就明白了int i =1;i = i ;i+1; 加1后没有赋给任何变量  所以i的值不变print(i);
    因为i的值没有变   所以输出的还是1其实也就是说    i = i++    相当于  i = i ;  i+1;
      

  3.   

    j=i++;是先赋值,再增加1
    j=++i;是先增加1,再赋值
      

  4.   

    以下是楼上说的话
    其实也就是说         i   =   i++         相当于     i   =   i   ;     i+1; 问
     如果i   =   i++         相当于     i   =   i   ;     i+1; 
    那么j   =   i++         相当于     j   =   i   ;     i+1; 喽?显然是不对的
    i++和++i等我都知道,我不是初学者,我就是想不通i++有时是不是违背了先赋值后自增的说法了
      

  5.   

    那么j =i++   相当于           j = i  ;  i+1;   喽?是这样的  怎么看出来显然是不对的呢?