返回信息流struct DataTime{
unsigned int year;
unsigned int month :4;
unsigned int day :5;
unsigned int hour :5;
unsigned int minute :6;
unsigned int secend :6;
};
struct DataTime dt;
cout<<sizeof(dt)<<endl;//这个怎么输出是8呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #39899同步于 2010/6/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
带有位域的struct 大小问题
biti04314
2010/6/1镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
好像是bit对齐?
【 在 biti04314 (APTX4869) 的大作中提到: 】
: struct DataTime{
: unsigned int year;
: unsigned int month :4;
: ...................
后面的幾個bitfield都是int型的
可以盛放在同一個int型container中
它們之間沒有padding
只有最后一個member后面有6個bit的padding
size=4bytes(year)+4 bits(month)+5bits(day)+5bits(hour)+6 bits(minute)+6bits(sec)+6bits(padding)=8 bytes
如果你把day hour minute換成unsigned char
它們之間就會有padding了
最后總的size會變成12
【 在 biti04314 的大作中提到: 】
: struct DataTime{
: unsigned int year;
: unsigned int month :4;
: ...................