43得票4回答
如何确定/测量具有位域的结构体的大小?

#include <stdio.h> typedef struct size { unsigned int a:1; unsigned int b:31; unsigned int c:1; } mystruct; int mai...

43得票6回答
C++使用位域打包布尔值

我刚刚使用位域做了一个测试,结果让我感到惊讶。class test1 { public: bool test_a:1; bool test_b:1; bool test_c:1; bool test_d:1; bool test_e:1; boo...

43得票14回答
在Swift中声明和使用位字段枚举

如何在Swift中声明和使用位域?像这样声明枚举确实可行,但尝试将两个值进行按位或操作会导致编译错误:enum MyEnum: Int { case One = 0x01 case Two = 0x02 case Four = 0x04 ...

40得票5回答
符合C++11标准的位掩码使用枚举类

你能否使用枚举类实现符合标准(如n3242草案17.5.2.1.3所述)的类型安全位掩码?据我理解,如果类型T支持|、&、^、~、|=、&=和^=运算符,并且你可以在类型为T的l和r之间执行if(l&r),则类型T就是位掩码。这个清单中缺少的是!=和==运算符,为了使排...

38得票5回答
零长度位域的实际应用

我不完全确定C语言是否支持,但是C++允许长度为0的匿名位域。例如:struct X { int : 0; }; 问题一:您可以想到哪些实际用途? 问题二:您知道哪些真实世界的实际用途(如果有的话)? 编辑:在ice-crime的答案后进行了编辑。 编辑:好的,由于当前的回答...

38得票15回答
在结构体中表示小值的最有效方法是什么?

通常我发现自己需要表示一个由非常小的值组成的结构。例如,Foo 有4个值,a、b、c、d,它们的范围从 0 到 3。通常我不在意,但有时候,这些结构会: 在紧密循环中使用; 它们的值会被读取数十亿次/秒,这是程序的瓶颈; 整个程序由数十亿个 Foo 组成的大数组构成; 在这种情况下,我...

35得票4回答
在C语言中是否有一个类似于sizeof()的位等效函数?

当应用于位域时,Sizeof()无法正常工作:# cat p.c #include<stdio.h> int main( int argc, char **argv ) { struct { unsigned int bitfield : 3; } s; ...

33得票4回答
在位字段中使用枚举是否安全?

假设我有以下结构体:typedef struct my_struct{ unsigned long a; unsigned long b; char* c; unsigned int d1 :1...

32得票4回答
C语言中变量名后面的冒号

可能是重复问题: 如何解释结构体声明中的冒号,例如 :1、:7、:16 或 :32? 这是一个参考页面的 C 代码示例。 signed int _exponent:8; 在“8”和“:8”之前的冒号有什么意义?

31得票4回答
能否使用位域数组?

我很好奇,是否可以使用位域数组? 比如:struct st { unsigned int i[5]: 4; };