您的位置首页生活百科

长整型,整型有什么区别呢?为什么整型变量分这么多种呢?

长整型,整型有什么区别呢?为什么整型变量分这么多种呢?

的有关信息介绍如下:

长整型,整型有什么区别呢?为什么整型变量分这么多种呢?

这是C语言留下的坑。C语言问世之初,是16位机时代,当时的C语言标准只规定int不少于机器字长,这个标准到如今仍然如此。标准规定了最小字长,但没有说必须是多长,那是由编译器和平台自己决定的自由权,不是什么系统是多长就以为那是政治正确。

早期的机器字长是16位,则很自然int的长度也是16位,但是这个范围的整数是不够用的,所以实现long int把长度翻倍,是32位,用以表示更多的整数范围。

到32机时代,同样是int,但按32位实现,此时的int就是32位的,不过仍然有long int数据,它是64位的。

64机和系统,一般地int会是64位,但这仍然有编译器裁决。不同的编译器商家有不同的策略。有些商家,比如微软,对int内置类型,C/C++实现为64位,但它有更内部的扩展类型_int32和_int64,如果程序员不希望有不确定性,选用这些确定长度的类型即可;在C#中,int映射为框架标准类型Int32,与市面上最常见的32位软件一致。

有些编译器,还有long long类型。

不要以为C的移植性有多好,这种不同字长的机器和系统,同样写int的数据,效果是不一样的,很多移植坑都是因此而来。

两者所分配的内存的大小不同,因此有着不同的取值范围。short int的长度是2字节,所以它所能表达的范围在2的15次方减1到负的2的15次方。如果一个整数超过2的15次方,也就是32768就会溢出而变成复数。int的长度是4字节,所以当值超过2的31次方减1,也就是21亿5千万的时候才会溢出,能表达的范围就比short要宽。long int的长度是8字节,所以它可以表达至2的63次方减1,也就是9.22乘以10的18次方。当然,前提是你不是用Windows系统,在Windows下长整型和整型没有区别,都是4字节,在其他平台,如Linux或Mac下才是8字节,这点和Java不同。