[C++]为何64位下int的宽度是4而不是8?

469 views
Skip to first unread message

Devymex Wang

unread,
Apr 6, 2012, 10:40:21 AM4/6/12
to pon...@googlegroups.com
在网上看到有人问为何64位下int的宽度是4而不是8?(http://bbs.chinaunix.net/thread-904126-1-1.html),那些盖楼的很多是不懂装懂,但自己也无法回答这个看似简单的问题。

我在VS2008下建立了x64的编译配置,发现只有指针变成了8字节,而int等其它数据类型的长度与32位配置下一致。

Intel的EM64T系统具备64位寻址能力,通用寄存器和运算器宽度都是64位,运算器可以处理64位数据块,就应当算作是64位系统。那么按照sizeof(int)等于寄存器长度的原则,int应该是8字节啊?

这里高人多,求解~

Milo Yip

unread,
Apr 6, 2012, 11:13:26 AM4/6/12
to pon...@googlegroups.com

Devymex Wang

unread,
Apr 6, 2012, 11:51:02 AM4/6/12
to pon...@googlegroups.com

明白了,谢谢!

bang he

unread,
Apr 11, 2012, 9:02:36 PM4/11/12
to pon...@googlegroups.com
其实你还是不明白

Devymex Wang

unread,
Apr 11, 2012, 9:13:02 PM4/11/12
to pon...@googlegroups.com

明白了,真的明白了。哈哈!

voolfu

unread,
Apr 12, 2012, 10:31:19 PM4/12/12
to TopLanguage
原来如此。之前只想到了兼容性。

On 4月6日, 下午11时13分, Milo Yip <milo...@gmail.com> wrote:
> http://en.wikipedia.org/wiki/64-bit#64-bit_data_models
>

> 2012/4/6 Devymex Wang <devy...@gmail.com>:

Michael

unread,
Apr 12, 2012, 10:56:09 PM4/12/12
to pon...@googlegroups.com
是怎么回事?E文看的少 很吃力 是规定不?
如果是规定 设计者出于什么情况考虑出现有的规则?

2012/4/12 Devymex Wang <dev...@gmail.com>



--
--
     此致
敬礼!
                                                            
--
Michael Zhou
C++,Lua,Python,Linux,MySQL,Game,Football,Basketball.

Devymex Wang

unread,
Apr 12, 2012, 11:17:37 PM4/12/12
to pon...@googlegroups.com

出于兼容性和现有c++语言标准的考虑,不同编译器采用不同的数据模型,vs采用的就是与32位完全兼容的那种:基本数据类型长度不变,指针为64位

Michael

unread,
Apr 13, 2012, 3:41:54 AM4/13/12
to pon...@googlegroups.com
就这么简单 只是吧指针修改为64bit 扩大指针的寻找范围
兼容是一方面 
对硬件需求也是一方面吧

2012/4/13 Devymex Wang <dev...@gmail.com>

unread,
Apr 27, 2012, 9:13:48 PM4/27/12
to TopLanguage
google ILP64,LP64 LLP64 你会更明白

bastijr

unread,
Apr 29, 2012, 10:56:32 AM4/29/12
to pon...@googlegroups.com
我记得CSAPP上面说int总是是4字节,而long在x32是4字节,在x64上是8字节

在 2012年4月6日星期五UTC+8下午10时40分21秒,Devymex写道:

Devymex Wang

unread,
Apr 29, 2012, 11:06:53 AM4/29/12
to pon...@googlegroups.com

我觉得倒是可以讨论一下未来会不会出现128位机,如果会那会是多远的将来呢?

Yongwei Wu

unread,
May 1, 2012, 12:06:03 PM5/1/12
to pon...@googlegroups.com
2012/4/29 bastijr <bas...@gmail.com>:
> 我记得CSAPP上面说int总是是4字节,

DOS里就不是。

> 而long在x32是4字节,在x64上是8字节

还是按别人说的去Google一下吧。这个跟操作系统有关。

--
Wu Yongwei
URL: http://wyw.dcweb.cn/

Devymex Wang

unread,
May 1, 2012, 12:09:40 PM5/1/12
to pon...@googlegroups.com

这样说不太严谨。在16位系统中是这样的

On May 2, 2012 12:06 AM, "Yongwei Wu" <wuyo...@gmail.com> wrote:

jee

unread,
May 8, 2012, 9:16:07 AM5/8/12
to pon...@googlegroups.com
为什么会有这样的问题呢?

Zhangming Niu

unread,
May 8, 2012, 9:23:26 AM5/8/12
to pon...@googlegroups.com
节省内存硬盘空间

2012/5/8 jee <houj...@gmail.com>

Linker Lin

unread,
May 22, 2012, 4:54:58 AM5/22/12
to pon...@googlegroups.com
主要是标准不统一导致的

发自我的 iDevice
Reply all
Reply to author
Forward
0 new messages