我只是想知道,为什么我们需要uint64_t
实际上是typedef of unsigned long
,当无符号长整数可用时。这只是为了缩短名称或任何其他原因吗?
答案 0 :(得分:9)
原因应该是非常明显的;这是64位精度的保证。 unsigned long
没有这样的保证。
在您的系统上它是typedef
的事实,只是意味着在上系统unsigned long
是64位。这一般情况并非如此,但typedef
可以改变(由编译器实现者)以保证uint64_t
。
答案 1 :(得分:1)
它并不总是unsigned long
的typedef,因为unsigned long
通常不是64位宽。例如,在x64 Windows上,unsigned long
为32位,只有unsigned long long
为64位。
答案 2 :(得分:1)
因为uint64_t
表示正好是64位的类型,其中unsigned long
可以是32位或更高。
在unsigned long为32位的系统上,它将用于键入def uint32_t
,而unsigned long long
将用于键入def uint64_t
。
答案 3 :(得分:1)
是的,它确实缩短了,但这不是唯一使用它的理由。使用这种typedef
数据类型的主要原则是使代码在各种平台上更加健壮和可移植。
有时,unsigned long
可能不是64位,但uint64_t
的定义将始终保证64位精度。 uint64_t
的typedef可以[读作:将]在不同的平台上变化,具有64位的精度。
示例:
long
为32位的系统,uint64_t
将为unsigned long long
long
为64位的系统,uint64_t
将为unsigned long
答案 4 :(得分:0)
不仅要缩短它,还要使它更具描述性。
如果您在代码uint64_t
中看到它,则很容易理解为unsigned int of 64 bits data type
。