C语言中各种数据类型的储存大小

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、数据类型有多少种?
  • 二、测试数据类型占用的内存和4种浮点型数据的计算精度
    • 1.占用内存
    • 2.4种浮点数的精度比较
  • 总结


前言

C语言中了解各个数据类型的储存大小也是非常重要的,可以避免数据溢出的问题


一、数据类型共有多少种?

数据类型一共有12种,其中int8种,float2种,double2种。

二、测试数据类型占用的内存和4种浮点型数据的计算精度

1.占用内存

代码如下(示例):

#include
int main()
{
    int a;
    short int b;
    long int c;
    long long int d;
    unsigned int e;
    unsigned short int f;
    unsigned long int g;
    unsigned long long int h;
    float c1,c2;
    long float d1,d2;
    double a1,a2;
    long double b1,b2;
    printf("int:%d\n", sizeof(a));
    printf("short int:%d\n", sizeof(b));
    printf("long int:%d\n", sizeof(c));
    printf("long long int:%d\n", sizeof(d));
    printf("unsigned int:%d\n", sizeof(e));
    printf("unsigned short int:%d\n", sizeof(f));
    printf("unsigned long int:%d\n", sizeof(g));
    printf("unsigned long long int:%d\n", sizeof(h));
    printf("float:%d\n", sizeof(c1));
    printf("long float:%d\n", sizeof(d1));

    printf("double:%d\n", sizeof(a1));
    printf("long double : % d\n", sizeof(a2));

测试结果:

C语言中各种数据类型的储存大小_第1张图片

可见,short int 占有更少的内存,在比较小的数据计算时可以节省内存,缺点是可储存的数范围小大概为:

                2^15=3,2768约等于3.2万

而最大储存范围的应该是unsigned long long int 储存范围为:

                        2^64-1=1844,6744,0737,0955,1614约等于1844兆

计算方法:

上图显示的是数据类型占用的字节数,通常一个字节为8位比特,也就是8个储存二进制位的地方,例如int:4字节*8比特=32位,去掉一个符号位,剩31位,可以储存最大为2^31-1的数,减一是因为0也是一个数,也占一个位置。

2.4种浮点数的精度比较

其实long float,long double已经很少用到了,今天偶然间才发现还有long float这种类型,不过还是一起比较比较。

 计算1/3的值

代码如下(接在上个图片之后):

c1 = d1 = a1 = b1 = 1;
    a2 = b2 = c2 = d2 = 3;
    printf("精度比较:\n");
    printf("float:      %.20lf\n", c1 / c2);
    printf("long float: %.20lf\n", d1 / d2);
    printf("double:     %.20lf\n", a1 / a2);
    printf("long double:%.20lf\n", b1 / b2);

测试结果:

 

 

 

可见,float在6位以后就不精确了,而long float,double,long double精度相同,而且统一都占8位,我暂时找不出什么区别(可能三个根本上就是一样的,所以才很少见到 long float和long double,都让double代替了)


 

 

总结

在C语言中,数据类型中储存数值最大的为unsigned long long int 约为1844兆,大于这个数的可能就要用更复杂的方法了(好像可以用数组来存储二进制位,我不怎么了解)

你可能感兴趣的:(c语言)