位字段的大小与字符的比较

Size of bit field compared to a char

本文关键字:字符 比较 字段      更新时间:2023-10-16

所以我知道

struct bit
{
    unsigned char a : 1;
}

由于填充,仍然会占用一个字节,我的问题是这样的:

struct bit
{
    unsigned char a : 1;
    ...
    unsigned char h : 1;
}

这个结构会占用与字符相同的大小吗?如果是这样,我最好只使用char吗?我问是因为我想使用位作为键,但如果可能的话,我宁愿避免按位运算。

使用位字段时不能保证任何内容。该结构可以具有任何大小和任何位顺序。事实上unsigned char标准甚至不支持位字段的类型!您的代码已经依赖于非标准扩展。

忘记

位域,忘记char.如果需要可预测的可移植代码,则应使用uint8_t运算符和按位运算符。