【发布时间】:2012-02-09 15:23:57
【问题描述】:
位域的典型用途是声明一个小于 8 位的空间有效变量。我不明白的是,将这些位声明为 short、int、long、bool 等的价值。例如
typedef struct{
int first:3,
short second:3,
char third:3
} somestruct;
在上述情况下,所有 3 个变量,即第一、第二和第三个都是 3 位长。将变量第一个声明为 int,第二个声明为 short,第三个声明为 char 的值是什么?
或者,为什么甚至需要数据类型?我应该能够将上述声明为
typedef struct{
first:3,
second:3,
third:3
} modifiedstruct;
modifiedstruct 假定变量 first、second 和 third 没有数据类型。将 3 位解释为字符、数字或浮点数的责任应该是 something else 的责任。
linux 上的 gcc 和 g++ 都允许上述行为。
【问题讨论】:
标签: c bit-fields