T.T*_*.T. 5 c c++ bit-manipulation char
struct stats
{
char top : 1;
char bottom : 1;
char side : 2;
} MyStat;
Run Code Online (Sandbox Code Playgroud)
我用整数看过这种格式,但上面的char位字段是如何工作的以及它代表什么?
谢谢.
应使用type signed int,from unsigned int或boolfrom 声明位域<stdbool.h>.其他类型可能是合法的(也可能不是合法的)(取决于平台),但要注意签名 - int可以将plain 视为未签名的位域.
也就是说,它可能是编译器的一个暗示,它的对齐struct应该是1而不是sizeof(int).并允许编译器接受char并赋予它这样的含义.
根据C99 6.7.2.1/9,
位字段被解释为由指定位数组成的有符号或无符号整数类型.如果将值0或1存储到_Bool类型的非零宽度位字段中,则位字段的值应等于存储的值.
和脚注:
如上面6.7.2中所述,如果使用的实际类型说明符是
int或者定义为typedef-nameint,则无论位字段是有符号还是无符号,它都是实现定义的.
| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |