#include<stdio.h>
#include<stdbool.h>
int main()
{
printf("%d",sizeof(true));
printf("%d",sizeof(false));
}
以上代码在C ++中的输出是11,在C中是44。为什么输出会有差异?
在C中,true
和false
是在<stdbool.h>
中定义的宏,它们根据C 2018 7.18扩展为类型为int
的整数常量1和0。int
的大小是实现-定义,并且4是常见的大小。
虽然C标准不需要标头的cpp部分,但如果您看到广泛使用的编译器,例如stdbool.h(与Clang类似的文件)的GCC实现,您就会看到
[true
和false
在C和C ++中的含义不同。