'无符号变量:value' C ++

时间:2014-08-12 07:26:06

标签: c++ c++11 boolean unsigned

我正在处理三元搜索树,我在三元搜索树节点结构中遇到了不同的事情:

struct Node {
    char data;

    // True if this character is last character of one of the words
    unsigned isEndOfString: 1;

    struct Node *left, *eq, *right;
};

它与 C ++ 11 和旧版本兼容。我想知道这unsigned isEndOfString: 1是什么意思?它与bool isEndOfString = true的区别如何?该语句实际指的是什么类型以及何时使用这种语法很方便?

1 个答案:

答案 0 :(得分:2)

它是大小为1的bit field。因此isEndOfString是一个位,其值为0或1。

基本上它允许你在这里将布尔标志存储在一个位中,从而最小化Node的内存占用。

请注意,位域是从C继承的。