关于C++中类定义的问题” :1”
可能的重复:
“unsigned temp:3”是什么意思
我在阅读时遇到问题Clang 的代码。
class LangOptions {
public:
unsigned Trigraphs : 1; // Trigraphs in source files.
unsigned BCPLComment : 1; // BCPL-style '//' comments.
...
};
我第一次看到语法“:1”,“:1”代表什么?谢谢!
Possible Duplicate:
What does 'unsigned temp:3' means
I encountered a problem when I'm reading the code of Clang.
class LangOptions {
public:
unsigned Trigraphs : 1; // Trigraphs in source files.
unsigned BCPLComment : 1; // BCPL-style '//' comments.
...
};
This is the first time I saw the syntax " : 1", what's the " : 1" stands for? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它是一个 位域,这意味着该值将仅使用一位,而不是 32 位(或其他位)
sizeof(unsigned) *
在您的平台上)。位域对于编写紧凑的二进制数据结构非常有用,尽管它们会带来一些性能成本,因为编译器/CPU 无法更新单个位,但在读/写完整字节时需要执行 AND/OR 操作。
It's a bitfield, which means that the value will only use one bit, instead of 32 (or whatever
sizeof(unsigned) * <bits-per-byte>
is on your platform).Bitfields are useful for writing compact binary data structures, although they come with some performance cost as the compiler/CPU cannot update a single bit, but needs to perform AND/OR operations when reading/writing a full byte.
Trigraphs
和BCPLComment
仅使用 1 位来保存值。例如,
仅使用8位内存。 struct S 可以使用单个字节或内存。
对于某些实现的情况,
sizeof(S)
为 1。但是
type
和temp
等于 0、1、2 或 3。而num
是仅等于 0,1,2,..., 15。
Trigraphs
andBCPLComment
use 1 bit only for saving values.For example,
uses only 8 bit of memory.
struct S
may use a single byte or memory.sizeof(S)
is 1 for the case of some implementations.But
type
andtemp
is equal to 0,1,2 or 3. Andnum
isequal 0,1,2,..., 15 only.
这些是位字段。 “1”是以位为单位的宽度。
有关说明,请参阅 C 常见问题解答。
These are bit fields. The "1" is the width in bits.
See the C FAQ for an explanation.