下列C++;代码意味着 我正在读Adam Drozdek的C++第四版的数据结构和算法,我遇到了下面的代码。我的问题是,冒号在unsigned int后继者中做什么:1。 我发现一个答案是冒号使后继者只占用一位。但是我知道布尔变量需要字节的倍数,因为变量必须是可寻址的。如果后继者只占用一位,它如何可以寻址 template<class T> class ThreadedNode { public: ThreadedNode() { left = right = 0; } ThreadedNode(const T& e, ThreadedNode *l = 0, ThreadedNode *r = 0) { el = e; left = l; right = r; successor = 0; } T el; ThreadedNode *left, *right; unsigned int successor : 1; }; 模板 类ThreadedNode{ 公众: ThreadedNode(){ 左=右=0; } ThreadedNode(常数T&e,ThreadedNode*l=0,ThreadedNode*r=0){ el=e;左=l;右=r;后继=0; } T el; ThreadedNode*左,*右; 无符号整数后继:1; };

下列C++;代码意味着 我正在读Adam Drozdek的C++第四版的数据结构和算法,我遇到了下面的代码。我的问题是,冒号在unsigned int后继者中做什么:1。 我发现一个答案是冒号使后继者只占用一位。但是我知道布尔变量需要字节的倍数,因为变量必须是可寻址的。如果后继者只占用一位,它如何可以寻址 template<class T> class ThreadedNode { public: ThreadedNode() { left = right = 0; } ThreadedNode(const T& e, ThreadedNode *l = 0, ThreadedNode *r = 0) { el = e; left = l; right = r; successor = 0; } T el; ThreadedNode *left, *right; unsigned int successor : 1; }; 模板 类ThreadedNode{ 公众: ThreadedNode(){ 左=右=0; } ThreadedNode(常数T&e,ThreadedNode*l=0,ThreadedNode*r=0){ el=e;左=l;右=r;后继=0; } T el; ThreadedNode*左,*右; 无符号整数后继:1; };,c++,data-structures,C++,Data Structures,这称为。表达式无符号整数后继者:1声明一个名为后继的无符号int,您希望只使用其中的1位 以需要使用比指定更多位的方式使用位字段的行为是实现定义的行为。也不可能获得指向位字段的指针或非常量引用,因为它们不一定从字节开头开始 位字段允许编译器在某些情况下通过将兼容的位字段打包在一起来减小类型的大小。就大小缩减而言,位字段是不具有约束力的,并且只是编译器的一个机会。意味着有些人不知道他们在做什么。这个地方的比特域绝对没用。

这称为。表达式
无符号整数后继者:1
声明一个名为
后继
无符号int
,您希望只使用其中的1位

以需要使用比指定更多位的方式使用位字段的行为是实现定义的行为。也不可能获得指向位字段的指针或非常量引用,因为它们不一定从字节开头开始


位字段允许编译器在某些情况下通过将兼容的位字段打包在一起来减小类型的大小。就大小缩减而言,位字段是不具有约束力的,并且只是编译器的一个机会。

意味着有些人不知道他们在做什么。这个地方的比特域绝对没用。