测试以下类型在内存中所占的空间:char、int、short、long、float、double。该如何解决

测试以下类型在内存中所占的空间:char、int、short、long、float、double。

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
a=sizeof(int);
    printf("int在内存中所占空间是:%d\n",a);
    char b;
b=sizeof(char);
    printf("char在内存中所占空间是:%d\n",b);
    short c;
c=sizeof(short);
    printf("short在内存中所占空间是:%d\n",c);
    long d;
d=sizeof(long);
    printf("long在内存中所占空间是:%d\n",d);
    float e;
e=sizeof(float);
    printf("float在内存中所占空间是:%d\n",e);
    double f;
f=sizeof(double);
    printf("double在内存中所占空间是:%d\n",f);
system("pause");
return 0;
}



我这样写,但貌似单精度和双精度不对啊,请大家指教。
------解决方案--------------------
任何类型的sizeof结果都是整数型。

你代码里,
double f;
    f=sizeof(double);

当然不对。

------解决方案--------------------
不需要定义那么多变量,
直接sizeof(类型) 就好!
------解决方案--------------------

double f;
f=sizeof(double);

double虽然是小数,但double占的空间是整数啊,所以f应该定义成int,你定义成了double会存在浮点误差,比如4可能保存为3.999999,你用%d输出来就取整变成3了,这应该是错误的根源
------解决方案--------------------
除了char是1字节的, 其他标准都没有规定, 都是编译器决定的, 在不同的平台上可能取值不同. 通常情况下
int(4字节)
long(32位机器上4字节, 64位机器上8字节)
short(2字节)
float(4字节或8字节)
double(8字节)