为什么此代码为什么在结构中包含冒号?

问题描述 投票:0回答:1

[请说明这段代码的执行方式。为什么我们在结构中使用了“:”。结构中使用冒号是什么。sizeof运算符的输出应该是什么。

#include <stdio.h>
int main()
{
struct bitfield {
    signed int a : 3;
    unsigned int b : 13;
    unsigned int c : 1;
};
struct bitfield bit1 = { 2, 14, 1 };
printf("%ld", sizeof(bit1));
return 0;
}
c struct unsigned signed
1个回答
0
投票

这是bit fields语法的一部分。这意味着a占用3位,b占用13位,c仅占用1位。当然,该结构将不会仅占用内存中的17位,因为它必须与作为最小可寻址存储单元的字节对齐,因此sizeof(bit1)将至少为3个字节(可能会与与计算机相关的某个值对齐)字,例如4个字节)。

© www.soinside.com 2019 - 2024. All rights reserved.