以下C++代码是什么意思?结构声明中的冒号意味着什么,例如:1,:7,:16或32:
unsigned char a : 1;
unsigned char b : 7;
我想它会创建两个char a和b,二者应该是一个字节长,但我不知道什么是“1”和“7”的一部分一样。
以下C++代码是什么意思?结构声明中的冒号意味着什么,例如:1,:7,:16或32:
unsigned char a : 1;
unsigned char b : 7;
我想它会创建两个char a和b,二者应该是一个字节长,但我不知道什么是“1”和“7”的一部分一样。
我相信那些将是位域。
严格地说,一个位域必须是int,unsigned int或_Bool。尽管大多数编译器会采用任何整数类型。
编号C11 6.7.2.1:
位字段应该有一个类型,它是一个合格的或不合格的 版本_Bool的,符号整数,无符号整型,或其他一些 实现定义的类型。
您的编译器可能会分配1个字节的存储空间,但可以免费获取更多。
价C11 6.7.2.1:
实现可以分配任何可寻址的存储单元大 足以容纳一个比特字段。
当您有多个位域一个接一个地声明时,就会节省费用。在这种情况下,如果可能,分配的存储将被打包。
价C11 6.7.2.1:
如果有足够的空间保持,即 紧跟在一个结构中的另一位字段位字段应装 到相同单元的相邻比特。如果剩余空间不足, 是否将不合适的位字段放入下一个单元或是否与相邻单元重叠是实现定义的。
为什么downvote? – 2009-10-22 04:16:53
不确定,除非它是简洁或不确定的,但是因为(1)你在技术上是正确的,和(2)分享周围的爱情:-) – paxdiablo 2009-10-22 04:19:12