Q
关于产品碳构建
4
A
回答
11
bitfield。 x是1位长。
每个字段访问和操作 ,好像它是一个 结构的普通构件。有符号的关键字和 无符号意味着你期望的, ,只是有趣的是注意 一个两个的 补充机器上的1位有符号字段只能取 值0或-1。这些声明允许包含const和 易失性限定符,其中声明为 。
主要使用位域的要么是 允许数据的紧密堆积或以 能够指定内的一些 外部产生的数据文件的字段。 C 不能保证机器字内的 字段的顺序,所以如果你使用 后面的原因,你的程序将不仅仅是不可移植的,它也会依赖于编译器。 标准表示字段被打包为'存储单元',其中 通常是机器字。包装 的顺序以及位域 是否可能跨越存储单元边界,都是 实现定义的。要强制 与存储单元边界对齐,请使用 零宽度字段,然后在想要对齐的 之前使用零宽度字段。
小心使用它们。它可能需要 令人惊讶的运行时间代码量 来操纵这些东西,并且您可以使用更多的空间比使用 保存更多的空间。
位域没有地址 - 您的 不能有指向它们的指针或它们的数组 。
http://publications.gbdirect.co.uk/c_book/chapter6/bitfields.html
0
即语法用于表示位字段(即比特比数据类型本身窄的场),所以在您的示例中的“X”是真正使用int的1个比特。
一个更有用的例子可能是这样的
char x:4;
char y:4;
这将打包两个4位字段为一个字节。当然,优点是节省每个字节都很关键的体系结构中的空间。
1
这是一个1位长的字段。关于wikipedia有一个很好的讨论。
3
这些是位域。在结构中可以定义多少位分配给变量(覆盖的变量类型的标准)在上述X,仅使用1个字节的示例
,因此只能采取的值0或1。
请参阅中的以下示例。请点击链接了解更多信息。
struct {
/* field 4 bits wide */
unsigned field1 :4;
/*
* unnamed 3 bit field
* unnamed fields allow for padding
*/
unsigned :3;
/*
* one-bit field
* can only be 0 or -1 in two's complement!
*/
signed field2 :1;
/* align next field on a storage unit */
unsigned :0;
unsigned field3 :6;
}full_of_fields;
相关问题
- 1. 关于产品DispatcherUnhandledException
- 2. 关于产品:开关
- 3. 关于产品厂设计建筑
- 4. 使用Maven构建产品
- 5. Magento:构建产品的URL
- 6. 关于产品NullExceptionError在C#
- 7. 关于产品的NSMutableArray
- 8. 关于产品的同时
- 9. 关于产品的LINQ
- 10. 关于产品的.htaccess
- 11. 关于产品X = Y ==ž
- 12. C++ - 关于产品的typedef
- 13. 关于产品在Python
- 14. 关于产品的strcmp
- 15. 关于产品的NSMutableArray
- 16. 关于产品使用CELLID
- 17. 关于产品CronTrigger - 石英
- 18. 关于产品@property和@synthesize
- 19. 关于产品使用.NET
- 20. 关于产品产量return语句
- 21. 关于类别产品关系模型的建议
- 22. 构建新产品:ASP.NET与SharePoint 2010
- 23. 建模产品定价结构
- 24. 我如何构建WooCommerce产品集合?
- 25. 关于产品的jQuery了slideDown
- 26. 关于产品在C unsigned int类型
- 27. 关于产品蛋糕模式
- 28. 关于产品选择查询(访问)
- 29. 关于产品列表<T>
- 30. 关于产品的foreach和代表
谢谢!但是这只是将它声明为一个常规整数有什么好处? – 2009-06-17 15:58:26