C++ C/C中的Int类型++

C++ C/C中的Int类型++,c++,c,64-bit,int,C++,C,64 Bit,Int,可能重复: 在C/C++中,以下两者之间的区别是什么: u_int64 myNum; 以及: 据我所知,它们都只吃无符号整数,内存为64位。无符号长不必是64位,而uint64\u t必须是64位。有一种整数类型的层次结构,其中每种类型都必须至少与前一种类型一样大:有符号的char、short、int、long、long和类似的无符号对应类型。有一些锚定点,指出char是一个字节,一个字节不必是8位,就我所能回忆起的,short至少是2个字节16位。在C++11中。但这些类型都不是精确给定位

可能重复:

在C/C++中,以下两者之间的区别是什么:

u_int64 myNum;
以及:

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

无符号长不必是64位,而uint64\u t必须是64位。有一种整数类型的层次结构,其中每种类型都必须至少与前一种类型一样大:有符号的char、short、int、long、long和类似的无符号对应类型。有一些锚定点,指出char是一个字节,一个字节不必是8位,就我所能回忆起的,short至少是2个字节16位。在C++11中。但这些类型都不是精确给定位数的


有关更多信息,请参见@chris的链接。

C语言本身没有指定int的大小

long必须至少与int一样长 long long必须至少和long一样长

此外,u_int64_t是c99类型,在ANSI c89中不可用


此外,在64位体系结构中,LP64表示long和指针是64位的,LLP64表示long和指针是64位的。

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

无符号长>=32位。长只需要至少和int一样长。真的吗?哇,我还以为是64。在java中是64位,不是吗?@ChristianDaley long至少是32位,int至少是16位。在java中,long确实意味着有符号的64位,但在C中不一定如此。提供了一个很好的总结。也就是说,如果我想要一个总是64位的数字,我应该用u_int64@ChristianDaley看见这可能会对你有帮助。@ChristianDaley你的意思是什么?如果是,是的。但是,如果您的平台不提供64位类型,则该类型可能不存在。始终存在uint_least64_t,它将提供第一个至少具有64位的类型。您的层次结构应以有符号字符开始。裸字符有点奇怪。短字符只有一个字节长是完全可行的。事实上,只要一个字符足够宽,就可以有sizeofchar==sizeofshort==sizeofint==1。好的,谢谢。我能在Xcode中使用u_int64吗?C没有u_int64类型。C有一个可选的uint64_t类型。是的,你可以在苹果网站上找到的任何版本的xcode都会包含一个兼容c99的编译器。
unsigned long myNum;