首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用bits时的警告

使用bits时的警告
EN

Stack Overflow用户
提问于 2011-04-13 22:49:14
回答 3查看 274关注 0票数 0
代码语言:javascript
运行
复制
 BYTE original = 0xF0F0;
     BYTE bMask = 0x0000;
BYTE wMask = 0xFFFF;
BYTE  newBits = 0xAAAA;

/*& operation with "0bit set 0" & "1bit give no change to original byte" */
cout<<"Original o: "<<bits(original)<<endl;
cout<<"NewBits: "<<bits(newBits)<<endl;
cout<<"BMask m: "<<bits(bMask)<<endl;
cout<<"WMask m: "<<bits(wMask)<<endl;
cout<<"o & m with BMask: "<<bits(original & bMask)<<endl;/*0 set original bit as 0 */
cout<<"o & m with WMak: "<<bits(original & wMask)<<endl;/*1 bit put no effect on image*/
cout<<"Result"<<bits(original & wMask | newBits)<<endl;

我的OutPut是正确的,但我收到警告...

首先,我使用char类型进行声明,因为char占用内存中的1Byte。但这还是给了我警告...

然后我应用BYTE byte而不是char...because BYTE,也在内存中使用1Byte。

警告:警告C4309:‘初始化’:常量值的截断

此警告显示在所有申报行上。如果char和Byte占用内存中的1Byte,那么为什么我收到警告..这里我漏掉了什么?有人能帮帮我吗?期待一个好的回应谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-13 22:50:48

例如,0xF0F0需要16位-2字节。尝试使用unsigned short而不是BYTE

票数 3
EN

Stack Overflow用户

发布于 2011-04-13 22:52:35

1字节=8位。0xf0f0为16位。

票数 0
EN

Stack Overflow用户

发布于 2011-04-13 22:54:19

0xf0f00xffff0xaaaa是两个字节的常量,换句话说就是一个short int

编译器只是警告你,它正在丢弃你赋值的两个字节中最重要的字节:

0xf0f0 =>编译器赋值0xf0

0xffff =>编译器赋值0xff

0xaaaa =>编译器赋值0xaa

问题是:为什么你想把一个2字节的常量赋值给你期望的1字节大小的东西呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5651169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档