在c ++中是否存在64位int这样的东西?

时间:2011-03-01 21:43:43

标签: c++ 64-bit

是否有真正的平台/编译器组合将int定义为64位?或者这只是用来吓唬像我这样的新程序员使用int32_t,其中大小很重要(例如保存到文件中)以使其“可移植”?

5 个答案:

答案 0 :(得分:8)

绝对有这样的系统。未来可能会有更多(或可能没有)。你想打赌int对可能的128位架构有何看法?

维基百科有一个不完整但有用的纲要:http://en.wikipedia.org/wiki/64-bit#64-bit_data_models

答案 1 :(得分:1)

我相信在c99中long long通常是64位。 gcc和microsoft都使用这个约定。

http://jk-technology.com/c/inttypes.html#long_long

答案 2 :(得分:0)

我知道在SGI 64位IRIX下,很久以前,long类型声明了一个64位整数,除非你传递了-n32标志并获得了32位代码。 Sun的解决方案是组成一个64位的long long类型,并将long保留为32位。旧的Apple Macintosh OS将int视为16位。在漫游时,我可以指出char在几个TI DSP上是16位。

除了long long解决方案(因为它当时改变了语言的语法),所有这些都符合C标准。所以,是的,<stdint.h>背后的理由是而不是只是一个恐怖的故事。它发生了。

答案 3 :(得分:0)

当然有些编译器有64位ints

int通常是您的体系结构的自然字大小(即64位系统具有64位ints,16位系统具有16位ints等等)。

除非您知道变量需要32位,否则不应使用int32_t,例如网络协议,二进制文件格式或硬件寄存器。如果在没有必要的情况下在64位计算机上使用int32_t,则可能无缘无故地引入性能问题。由于int是自然字大小,因此它往往也是最有效的数据类型。在RISC架构中尤其如此。

答案 4 :(得分:0)

如果您希望代码可移植,则可能需要长时间存储64位值。