在下面的示例中,我可以用位定义C元素的大小吗?
#include <stdio.h>
typedef enum {
false = 0,
true = ~0
} bool;
int main(void) {
bool x;
printf("%d", sizeof x);
return 0;
}
答案 0 :(得分:6)
一般来说,没有。最小可寻址单位是一个字节,而不是一个字节。
你可以使用bitfields做有趣的事情,例如:
struct {
unsigned a : 31;
unsigned b : 1;
};
该结构可能一个sizeof == 4
,a
将使用31位空间,b
将使用1位空间。
答案 1 :(得分:0)
enum
是int大小。我需要做的就是使隐式转换显式化。
#include <stdio.h>
typedef enum {
true = ~(int)0,
false = (int)0
} bool;
int main(void) {
return false;
}