以下的
我猜测C编译器不得不生成额外的指令进行位操作。因此虽然数据大小减小了,但代码大小增加了。
有没有熟悉C编译器的人能够解答一下?
位域
示例代码取自这里,声称具有更好的存储效率。但我想知道编译器如何处理位域?我猜测C编译器不得不生成额外的指令进行位操作。因此虽然数据大小减小了,但代码大小增加了。
有没有熟悉C编译器的人能够解答一下?
#include <stdio.h>
// A space optimized representation of date
struct date
{
// d has value between 1 and 31, so 5 bits
// are sufficient
unsigned int d: 5;
// m has value between 1 and 12, so 4 bits
// are sufficient
unsigned int m: 4;
unsigned int y;
};
int main()
{
printf("Size of date is %d bytes\n", sizeof(struct date));
struct date dt = {31, 12, 2014};
printf("Date is %d/%d/%d", dt.d, dt.m, dt.y);
return 0;
}
unsigned int m: 4;
在语法上是否正确? - nbro