栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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:%dn", sizeof(a));
    printf("short int:%dn", sizeof(b));
    printf("long int:%dn", sizeof(c));
    printf("long long int:%dn", sizeof(d));
    printf("unsigned int:%dn", sizeof(e));
    printf("unsigned short int:%dn", sizeof(f));
    printf("unsigned long int:%dn", sizeof(g));
    printf("unsigned long long int:%dn", sizeof(h));
    printf("float:%dn", sizeof(c1));
    printf("long float:%dn", sizeof(d1));

    printf("double:%dn", sizeof(a1));
    printf("long double : % dn", sizeof(a2));

测试结果:

可见,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:      %.20lfn", c1 / c2);
    printf("long float: %.20lfn", d1 / d2);
    printf("double:     %.20lfn", a1 / a2);
    printf("long double:%.20lfn", b1 / b2);

测试结果:

 

 

 

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


 

 

总结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879498.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号