public class Test2
{
    public static void main(String[] args)
    {
        int v1,v2=1,v3=0;//我把int改成short以后再运行,为什么出现错误?既然可以32位,16位应该也可以啊,把int改成long以后,64也可以 ,就是short不行,求助大家,谢谢!!!
        while(v3<64)
        { 
           
        v1=v2>>v3;
        
        System.out.println(v2+">>"+v3+"="+v1);
        v3++;
        }
    }
}

解决方案 »

  1.   

    short的存储范围比int小,所以类型转换的时候必须使用强制转换,而long的存储范围比int大,系统会自动转换,所以, v1=v2>>v3应该改为 v1=(int)(v2>>v3);.
      

  2.   

    错了,应该改成v1=(short)(v2>>v3)
      

  3.   

    是不是这样的:
    做左右移位运算时,系统默认是int型是吗?
    所以如果比int范围小,必须用强制转换对吗?
      

  4.   

    不对啊,我试着运行了下,v1=(short)(v2>>v3)的话,结果还是在32时才移位啊,不是16位是就移位啊
      

  5.   

    怎么没人帮我解答啊回复人:yilaxiayimashe() ( ) 信誉:100 2007-3-6 15:45:32 得分:0
    ?
    不对啊,我试着运行了下,v1=(short)(v2>>v3)的话,结果还是在32时才移位啊,不是16位是就移位啊
      

  6.   

    移位操作有2种
    一种是对int移位,一种是对long移位
    如果小于int,则以int为标准