• 3128阅读
  • 1回复

static_cast [复制链接]

上一主题 下一主题
离线neeme
 

只看楼主 倒序阅读 楼主  发表于: 2016-06-15
    QByteArray ba;
    ba.append(100);
    ba.append(200);
    uint x = ba[0];     // x = 100
    uint y = ba[1];     // y = 4294967240
    y = static_cast<uint>(ba[1]); // y = 4294967240
    y = static_cast<uchar>(ba[1]); // y = 200
  
    请问 ba[1] 为什么用 static_cast<uint> 还时不正确? 而只能用 static_cast<uchar> 才正确呢!
    谢谢!
    

开发平台:Ubuntu 16.04 64bit + Qt 5.9.4
运行平台:Ubuntu 16.04 64bit
离线马侬骑士

只看该作者 1楼 发表于: 2016-06-15
这是由于你的类型转换,由于你的QByteArray ba 是char类型,ba[1]也是,你要是将其认为是
uint y3 = (char)(ba[1]);//4294967240
uint y3 = (uchar)(ba[1]);//200
这些转换应该是内存拷贝,要是对于无符号的和有符号的拷贝应该是区别初始化吧,然后将低位拷贝
快速回复
限100 字节
 
上一个 下一个