class One
{
public static void main(String args[])
{
int i=100;
i=((i++ >> 35) << 32)%10;
System.out.println() ;
}
}怎么是2那 ,很头疼
对不起啊 新手没分

解决方案 »

  1.   

    i++ >> 35 就是 i++ >> 3 值为 12
    12 << 32 就是 12 << 0 值为 12
    12 % 10 = 2这题从哪弄来的?闲着没事干,移 35 位,移 32 位的!
      

  2.   

    还不对。。
    1.++优先级大于移位的啊,应该是先右移35位+1,然后再左移32位啊,是这个意思不啊;
    2.12<<32就是12<<0,是不是移到上限就不移了啊,对不住啊 我笨!
      

  3.   

    我意思是 i>> 35 就是 i>> 3 值为 12,i++返回值+1,就是13了啊
    13 << 32 就是 13 << 0 值为 13
    13 % 10 = 3指出我满脑子是菌的思想
      

  4.   

    移位详细解释尽在这里http://hi.baidu.com/freish/blog/item/7dc95c0f53028d206159f3ef.html
      

  5.   

    这就是同一个表达式中对同一个变量赋值多次的问题http://hi.baidu.com/freish/blog/item/aa947f8b42c4e118c9fc7a07.html
    也可以使用javap -c 命令对Class反编译,就一切明了了
      

  6.   

    由于++优先级小于移位,所以先计算移位,后才自加。
    i++ >> 35 就是 i >> 3 值为 12
    12 << 32 就是 12 << 0 值为 12
    12 % 10 = 2
    建议你先看看++在前面和后面的区别