【发布时间】:2010-07-22 05:10:16
【问题描述】:
可能的重复:
What does ‘: number’ after a struct field mean?
What does ‘unsigned temp:3’ means
我讨厌问这种类型的问题,但这真的让我很烦,所以我会问:
下面代码中 : 运算符的作用是什么?
#include <stdio.h>
struct microFields
{
unsigned int addr:9;
unsigned int cond:2;
unsigned int wr:1;
unsigned int rd:1;
unsigned int mar:1;
unsigned int alu:3;
unsigned int b:5;
unsigned int a:5;
unsigned int c:5;
};
union micro
{
unsigned int microCode;
microFields code;
};
int main(int argc, char* argv[])
{
micro test;
return 0;
}
如果有人关心的话,我从下面的链接中提取了这段代码: http://www.cplusplus.com/forum/beginner/15843/
我真的很想知道,因为我知道我以前在某个地方看到过这个,我想在我再次看到它时理解它。
【问题讨论】:
-
请注意,位域的布局是实现定义的,因此通过联合访问 int 中的位域的结果是未定义的。不要在生产代码中这样做,而是使用位掩码和移位。