位域和sizeof
来源:互联网 发布:javascript 移动div 编辑:程序博客网 时间:2024/06/11 21:13
为什么打印出来的结果是不一样的,unsigned field3给定不同的位字段打印出来的值不一样,而且既然声明为unsigned field3为什么按%d打出来还是-4?而sizeof(struct BitField)的值始终是8,我是在gcc下测试的.
#include <stdio.h>
struct BitField {
int field1 : 10;
signed field2 : 8;
unsigned field3 : 24;
};
struct Bit {
int field1 : 10;
signed field2 : 8;
unsigned field3 : 32;
};
int main(void)
{
struct BitField bitfiled;
struct Bit bit;
bitfiled.field1 = -5;
bitfiled.field2 = -3;
bitfiled.field3 = -4;
printf("bitfiled.field1 = %d, bitfiled.field2 = %d, bitfiled.field3 = %ul/n",
bitfiled.field1, bitfiled.field2, bitfiled.field3);
printf("sizeof(struct BitField) = %d/n", sizeof(struct BitField));
bit.field1 = -5;
bit.field2 = -3;
bit.field3 = -4;
printf("/nbit.field1 = %d, bit.field2 = %d, bit.field3 = %ul",
bit.field1, bit.field2, bit.field3);
printf("/nbit.field1 = %d, bit.field2 = %d, bit.field3 = %d/n",
bit.field1, bit.field2, bit.field3);
printf("sizeof(struct Bit) = %d/n", sizeof(struct Bit));
return 0;
}
=======================================================
执行结果:
bitfiled.field1 = -5, bitfiled.field2 = -3, bitfiled.field3 = 16777212l
sizeof(struct BitField) = 8
bit.field1 = -5, bit.field2 = -3, bit.field3 = 4294967292l
bit.field1 = -5, bit.field2 = -3, bit.field3 = -4
sizeof(struct Bit) = 8
- 位域和sizeof
- 位域和sizeof
- 位域和sizeof 2
- sizeof 和 strlen (32位.64位)
- sizeof(结构体)和内存对齐以及位域
- sizeof、内存对齐和位域的几篇文章
- sizeof计算位域大小
- 位域的sizeof问题
- 位运算和sizeof运算符
- sizeof--32位和64位操作系统的区别
- 32位和64位下的sizeof
- 32位和64位下的sizeof()
- 32位和64位下的sizeof
- C++ sizeof 64位和32位下的对比
- sizeof 字节的对齐,位域sizeof的计算
- sizeof的使用---sizeof,,字节对齐,位域
- sizeof与lstrlen的差别 32位和64位下sizeof有什么不同
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- VS2010 学习笔记 WF4 (9) 工作流基础总结
- exchange服务器,出错:MSExchangeIS 5000 (0xc004038a):由于权限不正确或删除了路由组而无法装入数据库
- Linux 开机过程概述
- RXQUAL覆盖图
- ODI中删除数据的处理
- 位域和sizeof
- windows+apache安装awstats
- 虚函数知识点,纯虚函数,const 等- -
- delphi MAP FILE
- MyEclipse 中cvs 配置
- gnuplot安装及使用
- 基于PDE的高斯尺度空间综述
- Delphi 小谈之TList 篇(转)
- submit()和onsubmit()的区别