测试以下类型在内存中所占的空间:char、int、short、long、float、double。该如何解决
测试以下类型在内存中所占的空间:char、int、short、long、float、double。
我这样写,但貌似单精度和双精度不对啊,请大家指教。
------解决方案--------------------
任何类型的sizeof结果都是整数型。
你代码里,
double f;
f=sizeof(double);
当然不对。
------解决方案--------------------
不需要定义那么多变量,
直接sizeof(类型) 就好!
------解决方案--------------------
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字节)
#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字节)