Search This Blog

Wednesday, September 27, 2006

64-bit环境下C语言的变量类型长度

受了16bit和32bit环境的影响,以为在我的gentoo 2006.1 amd64上int肯定是64bit的,结果发现是32bit,很是奇怪,难道是“伪64bit”,于是google之,找到资料,原文在这里
原来还有个model的问题,有三个model可选择,ILP64 LP64 LLP64
在ILP64下,int long pointer都是64bit,而LP64下int是32bit,long和pointer是64bit,LLP64的int和long都是32bit,pointer是64bit,要表达64bit的数据,要用long long来表示(非标准)
又说三个model里LP64的过渡最平滑,在64bit环境里写的代码不需要经过多大修改就能运行在32bit环境中,而其他两个model不是需要借助非标准的类型就是太依赖于环境,使得移植困难。

No comments: