none
uint16位移后数据类型怎么变成int了?? RRS feed

  • 问题

  •       UInt16 aaa = 1;
    
          //compile err: can't convert from int to uint !!
          UInt16 bbb = aaa <<15 ;
    
          //如果是这样的话,那岂不是有可能出现错误了。因为int的最高位
        //是用来表示标点的呀。 
    
        //正确的应该怎么写呢? 谢谢
    
    

    信奎爷,无所畏惧!!
    2011年5月17日 2:51

答案

  • MSDN

     

    移位运算符

    http://msdn.microsoft.com/zh-cn/library/aa691377(VS.71).aspx

     

    如此向右位移一定会导致数据类型变大,不可能继续是一个 uint16.

     

    可以这样妥协一下。。。

       UInt16 aaa = 1;
    
       int temp = aaa << 15;
       UInt16 bbb = (UInt16)temp;
    
    

     


    学习学习....
    2011年5月17日 5:25
  • 我本来是想利用左位移默认去掉左边被溢出的位,结果竟然装到更大的变量中了,郁闷.
    信奎爷,无所畏惧!!
    2011年5月18日 2:01

全部回复

  • MSDN

     

    移位运算符

    http://msdn.microsoft.com/zh-cn/library/aa691377(VS.71).aspx

     

    如此向右位移一定会导致数据类型变大,不可能继续是一个 uint16.

     

    可以这样妥协一下。。。

       UInt16 aaa = 1;
    
       int temp = aaa << 15;
       UInt16 bbb = (UInt16)temp;
    
    

     


    学习学习....
    2011年5月17日 5:25
  • dear

    位移後的結果會裝在int型態裡


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年5月17日 5:31
  • 我本来是想利用左位移默认去掉左边被溢出的位,结果竟然装到更大的变量中了,郁闷.
    信奎爷,无所畏惧!!
    2011年5月18日 2:01