#include <stdio.h>
int main () {
double num = 5.2;
int var = 5;
printf("%d\t", sizeof(!num));
printf("%d\t", sizeof(var = 15/2));
printf("%d", var);
return 0;
}
在VS 2010和GCC 4.7.0上运行此程序会将输出显示为1 4 5
,并使用Turbo 3.0 / 4.5作为结果提供2 4 5
。
我们从哪里可以获得数据类型的确切大小?
答案 0 :(得分:1)
这个问题是一个复杂的方法,可以问为什么sizeof(bool)
在某些编译器中为1,在其他编译器中为2。事实上,C ++标准不要求bool
的大小为1,这意味着不同的编译器可能会为它分配不同的大小,这就是你问题的答案。
至于为什么它不要求它为1,take a look at this related question about sizeof(bool)
。
如果你不清楚为什么bool
在这里涉及,那是因为你在一个double值上调用!
运算符,这相当于检查它是否为非零,等等支票返回bool
。其他两个打印基本上是sizeof(int)
(因为int / int
本身是int
)和整数的值。