为什么我们在unsigned long可用时需要uint64_t?

时间:2014-11-26 09:11:26

标签: c typedef type-conversion

我只是想知道,为什么我们需要uint64_t实际上是typedef of unsigned long,当无符号长整数可用时。这只是为了缩短名称或任何其他原因吗?

5 个答案:

答案 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位的精度。

示例:

  1. 对于long为32位的系统,uint64_t将为unsigned long long
  2. 的typedef
  3. 对于long为64位的系统,uint64_t将为unsigned long
  4. 的typedef

答案 4 :(得分:0)

不仅要缩短它,还要使它更具描述性。

如果您在代码uint64_t中看到它,则很容易理解为unsigned int of 64 bits data type