为啥 _Bool 是 1 位的,true 确是 4 位的?

#include <stdio.h>
#include <stdbool.h>

int main()
{
    printf("%d %d", sizeof(bool), sizeof(true));

    return 0;
}
在 gcc4.7.2 下输出竟然是 1 4,而不是想象中的 1 1。

打开 stdbool.h ,原来:

#define true	1
#define false	0
这样,sizeof(true) 就等于 sizeof(1),也就等于 sizeof(int),当然就是4了。

应该改成

#define true	(bool)1
#define false	(bool)0
再来测试结果就是 1 1。

不知道这算不算一个 bug 呢??






你可能感兴趣的:(为啥 _Bool 是 1 位的,true 确是 4 位的?)