结构中的无符号数据类型

sta*_*k92 1 c structure

可能重复:
这个C++代码是什么意思?
'unsigned temp:3'是什么意思?

我最近看过一个小c程序.在那个程序中,结构是以这种方式声明的,我无法理解.

struct
{
mynode *node;
unsigned vleft :1; 
unsigned vright :1; 
}save[100];
Run Code Online (Sandbox Code Playgroud)

这里node是指向其他结构的指针.

有人可以解释一下unsigned vleft:1; unsigned vright:1; 是?而且我找不到任何分配给vleft和vright的数据类型.这是什么原因?

谢谢.

Jac*_*ack 5

这里假设的默认类型是unsigned int,当您指定just时,编译器会假设这个类型unsigned.

位域语法unsigned vleft : 1指定数据字段的位宽度,在这种情况下,它意味着它是单位标志(可以是0或者1).这用于以较少的比特打包结构的许多字段(当你不需要浪费时,比如在这种情况下,整个charint只是存储标志).