首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-12-10 
测试以下类型在内存中所占的空间:char、int、short、long、float、double。#include stdio.h#include stdlib.

测试以下类型在内存中所占的空间: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字节)

热点排行