我有几个问题想问问各个专家第一:
int i=100;
i=((i++ >>35)<<32)%10;
System.out.println("i= "+i);i的结果是多少?为什么?谢谢第二:
int i=100;
i=i++;
System.out.println("i= "+i);
i的结果是多少?为什么?谢谢

解决方案 »

  1.   

    第一个问题:
    <<32相当于没移
    >>35相当于>>3,01100100>>3 = 00001100 = 12
    12%10 = 2第二个问题:
    i++后,i=101,而i++表达式仍然是100,后又赋值i=i++,即把i重新赋为100,最后才输出100
      

  2.   

    int   i=100; 
    i++; 
    System.out.println("i=   "+i);
    这样输出就为什么就是101
      

  3.   

    int       i=100;   
    i=i++;   /*是赋值之后i++,左边i的值还是100,i++ 开辟新内存i++      /*是赋值之后i++,i=101System.out.println("i=       "+i); 
    这样输出就为什么就是101