0

可能重复:
为什么 C++ int 和 long 类型都是 4 个字节?

在 C/C++ 中,有什么区别:

u_int64 myNum;

和:

unsigned long myNum;

据我所知,两者都只吃无符号整数,内存为 64 位。

4

3 回答 3

8

unsigned long不必是 64 位,而必须是 64uint64_t。有一种整数类型的层次结构,其中每种类型都必须至少与前面的类型一样大:signed char, short, int, long, long long, 并且对于它们的无符号对应物也是如此。有一些锚点,指出char是一个字节(一个字节不必是 8 位,据我所知short至少是2 个字节16 位。在 C++11 中,long long 至少是 64 位。但是这些类型都不是定的位数。

有关更多信息,请参阅固定宽度整数类型(感谢 @chris 提供的链接)。

于 2013-01-16T22:29:50.157 回答
0

unsigned longint像C/C++ 中的每一个一样依赖于机器。许多库,尤其是允许两台机器交互的库,都会键入 def 最int相似的数字,以确保两者的大小相同。u_int64基本上是将 def 类型转换为 64 位的无符号整数,以允许在任何机器上使用。理论上unsigned long可以是 128、64、256 或几乎任何大小。

于 2013-01-16T22:35:36.173 回答
0

intC 语言本身并没有说明 an有多大

long必须至少只要int
long long必须至少只要long

也是u_int64_tc99 类型,在 ANSI c89 中不可用。

在 64 位架构中也存在差异 LP64 表示long' 和指针是 64 位,LLP64 表示long long' 和指针是 64 位。

于 2013-01-16T22:32:30.130 回答