-2
#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结果。

我们从哪里可以获得数据类型的确切大小?

我确实阅读了以下链接:link1link2link3link4link5 但他们无法回答我的问题!

4

1 回答 1

1

这个问题是一种复杂的方式来询问为什么sizeof(bool)在某些编译器中是 1 而在其他编译器中是 2。事实上,C++ 标准并不要求 的大小为bool1,这意味着不同的编译器可能会为其分配不同的大小,这就是您问题的答案。

至于为什么它不需要它是1,看看这个相关的问题sizeof(bool)

如果您根本不清楚bool这里为什么涉及,那是因为您!在 double 值上调用了运算符,这相当于检查它是否为非零,并且这样的检查返回一个bool. 其他两个打印基本上是sizeof(int)(因为int / int是一个int本身)和一个整数的值。

于 2012-11-12T13:54:00.167 回答