189 8069 5689

C语言中的整数都存在于哪些呢

这篇文章给大家介绍C语言中的整数都存在于哪些呢,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联公司作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都企业网站定制方案、改版、费用等问题,行业涉及PE包装袋等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

整数是编程中常用的一种数据,C语言通常使用int来定义整数(int是integer的简写),这在《大话C语言变量和数据类型》中已经进行了详细讲解。

在现代操作系统中,int一般占用4个字节(Byte)的内存,共计32位(Bit)。如果不考虑正负数,当所有的位都为1时它的值最大,为232-1=4,294,967,295≈43亿,这是一个很大的数,实际开发中很少用到,而诸如1、99、12098等较小的数使用频率反而较高。

使用4个字节保存较小的整数绰绰有余,会空闲出两三个字节来,这些字节就白白浪费掉了,不能再被其他数据使用。现在个人电脑的内存都比较大了,配置低的也有2G,浪费一些内存不会带来明显的损失;而在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽力节省内存。

反过来说,43亿虽然已经很大,但要表示全球人口数量还是不够,必须要让整数占用更多的内存,才能表示更大的值,比如占用6个字节或者8个字节。

让整数占用更少的内存可以在int前边加short,让整数占用更多的内存可以在int前边加long,例如:

shortinta=10;

shortintb,c=99;

longintm=102023;

longintn,p=562131;

这样a、b、c只占用2个字节的内存,而m、n、p可能会占用8个字节的内存。

也可以将int省略,只写short和long,如下所示:

shorta=10;

shortb,c=99;

longm=102023;

longn,p=562131;

这样的写法更加简洁,实际开发中常用。

int是基本的整数类型,short和long是在int的基础上进行的扩展,short可以节省内存,long可以容纳更大的值。

short、int、long是C语言中常见的整数类型,其中int称为整型,short称为短整型,long称为长整型。

整型的长度

细心的读者可能会发现,上面我们在描述short、int、long类型的长度时,只对short使用肯定的说法,而对int、long使用了“一般”或者“可能”等不确定的说法。这种描述的言外之意是,只有short的长度是确定的,是两个字节,而int和long的长度无法确定,在不同的环境下有不同的表现。

一种数据类型占用的字节数,称为该数据类型的长度。例如,short占用2个字节的内存,那么它的长度就是2。

实际情况也确实如此,C语言并没有严格规定short、int、long的长度,只做了宽泛的限制:

short至少占用2个字节。

int建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。

short的长度不能大于int,long的长度不能小于int。

总结起来,它们的长度(所占字节数)关系为:

2≤short≤int≤long

这就意味着,short并不一定真的”短“,long也并不一定真的”长“,它们有可能和int占用相同的字节数。

在16位环境下,short的长度为2个字节,int也为2个字节,long为4个字节。16位环境多用于单片机和低级嵌入式系统,在PC和服务器上已经见不到了。

对于32位的Windows、Linux和MacOS,short的长度为2个字节,int为4个字节,long也为4个字节。PC和服务器上的32位系统占有率也在慢慢下降,嵌入式系统使用32位越来越多。

在64位环境下,不同的操作系统会有不同的结果,如下所示:

操作系统 short int long

Win64(64位Windows) 2 4 4

类Unix系统(包括Unix、Linux、MacOS、BSD、Solaris等) 2 4 8

目前我们使用较多的PC系统为WinXP、Win7、Win8、Win10、MacOS、Linux,在这些系统中,short和int的长度都是固定的,分别为2和4,大家可以放心使用,只有long的长度在Win64和类Unix系统下会有所不同,使用时要注意移植性。

sizeof操作符

获取某个数据类型的长度可以使用sizeof操作符,如下所示:

#include

intmain()

{

shorta=10;

intb=100;

intshort_length=sizeofa;

intint_length=sizeof(b);

intlong_length=sizeof(long);

intchar_length=sizeof(char);

printf("short=%d,int=%d,long=%d,char=%d\n",short_length,int_length,long_length,char_length);

return0;

}

在32位环境以及Win64环境下的运行结果为:

short=2,int=4,long=4,char=1

在64位Linux和MacOS下的运行结果为:

short=2,int=4,long=8,char=1

sizeof用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略(),如果跟的是数据类型,就必须带上()。

需要注意的是,sizeof是C语言中的操作符,不是函数,

关于C语言中的整数都存在于哪些呢就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享标题:C语言中的整数都存在于哪些呢
文章分享:http://cdxtjz.cn/article/gpsppd.html

其他资讯