long a0, a1, a2, a3;
a1 = 255;
a2 = 255;
a3 = 255;
long b0, b1, b2, b3;
b1 = a1 << 16;
b2 = a2 << 8;
b3 = a3;
System.out.println(b1 + b2 + b3);
System.out.println(255l << 16 + 255l << 8 + 255l);输出为:
16777215
1069547520
为什么不一样??

解决方案 »

  1.   

    最后一行要这样System.out.println((255l << 16) + (255l << 8) + 255l);因为+的优先级高于<<你的最后一句相当于System.out.println(255l << (16 + 255l) << (8 + 255l));
      

  2.   

    优先级的问题, 楼主可以用括号括起来System.out.println((255 << 16) + (255 << 8) + 255);
    这样的话, 两次结果就一样了
      

  3.   

    优先级的问题,+的优先级高于<<