c - 结构中的无符号数据类型

标签 c structure

<分区>

Possible Duplicate:
What does this C++ code mean?
What does ‘unsigned temp:3’ mean?

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

struct
{
mynode *node;
unsigned vleft :1; 
unsigned vright :1; 
}save[100];

这里的节点是指向其他结构的指针。

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

谢谢。

最佳答案

此处假设的默认类型是 unsigned int,当您仅指定 unsigned 时,编译器会假设这是默认类型。

位域语法 unsigned vleft : 1 指定数据字段的位宽度,在这种情况下它意味着它是一个位标志(可以是 01)。这用于将结构的许多字段打包成更少的位(当你不需要浪费时,就像在这种情况下,整个 charint 只用于存储一面旗帜)。

关于c - 结构中的无符号数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14344174/

相关文章:

c - 结构中的数据对齐和avx优化

c++ - 是否可以像这样编写c malloc函数代码

c++ - 影响 Makefile 中其他库的库

c++ - 表达式 -2[array] 是如何工作的?

在 LINUX 中检查简单的字符设备读/写函数

c - 实现二叉搜索树 - "incompatible types when returning type ' struct item_t *'..."

构建线段树时的 C++ 段错误

c - 如何在 C 中定义用于保存字符串和数字的数据类型

c - 将结构体的地址传递给函数

C:将嵌套结构数组传递给函数