32位系统与64位系统数据类型的区别
32和64位C语言内置数据类型,如下表所示:
在这张表中,ILP32是32位平台上的字长模型,LP64,ILP64,LLP64是64位平台上的字长模型。表中第一行的大写字母和数字含义如下所示:
I表示:int类型
L表示:long类型
P表示:pointer指针类型
32表示:32位系统
64表示:64位系统
LP64意思是long和pointer是64位,ILP64指 int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。
32位环境涉及”ILP32”数据模型,是因为C数据类型为32位的int、long、指针。而64位环境使用不同的数据模型,此时的long和指针已为64位,故称作”LP64”数据模型。
现今所有64位的类Unix平台均使用LP64
数据模型,而64位Windows使用LLP64
数据模型,除了指针是64位,其他基本类型都没有变。
32位Windows采用的是ILP32
数据模型,64位Windows采用的是LLP64
数据模型。所以,Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同??由32位变成了64位。
64位Linux 使用了 LP64 标准,即:long类型和pointer类型长度为64位,其他类型的长度和32位系统下相同类型的长度相同,32位和64位下类型的长度比较见上图的蓝色部分。
64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: 32位系统与64位系统数据类型的区别
文章字数: 406
本文作者: Jun
发布时间: 2018-04-17, 17:11:00
最后更新: 2018-06-21, 15:19:48
原始链接: http://yoursite.com/2018/04/17/32位系统与64位系统数据类型的区别/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。