我可以用比特来定义C元素的大小吗?

mot*_*oku 0 c

在以下示例中,我可以用位定义C元素的大小吗?

#include <stdio.h>

typedef enum {
    false = 0,
    true = ~0
} bool;

int main(void) {
    bool x;
    printf("%d", sizeof x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*nch 6

一般来说,没有.最小可寻址单元是一个字节,而不是一个位.

您可以使用位域执行有趣的操作,例如:

struct {
    unsigned a : 31;
    unsigned b : 1;
};
Run Code Online (Sandbox Code Playgroud)

该结构可能会有一个sizeof == 4,a将使用31位空间,b并将使用1位空间.