不同整数类型之间的差异

时间:2012-08-02 21:32:27

标签: c++ c

我想知道uint32_tuint32之间有什么区别,当我查看头文件时它有这个:

types.h:

    /** @brief 32-bit unsigned integer. */
    typedef unsigned int uint32;
stdint.h:

    typedef unsigned   uint32_t;

这只会带来更多问题: 有什么区别

unsigned varName;

unsigned int varName;

我正在使用MinGW.

4 个答案:

答案 0 :(得分:20)

unsignedunsigned int是同义词,非常类似于unsigned short [int]unsigned long [int]

uint32_t是(可选)由C标准定义的类型。 uint32只是你编造的名字,虽然碰巧被定义为同一个东西。

答案 1 :(得分:6)

没有区别。

在您的案例中

unsigned int = uint32 = uint32_t = unsignedunsigned int = unsigned始终

答案 2 :(得分:2)

unsignedunsigned int之间完全没有区别。

该类型是否与uint32_t匹配良好,但依赖于实现; int可能比32位短“。

答案 3 :(得分:1)

由于历史原因,

unsignedunsigned int是同义词;它们都意味着" CPU架构/平台最自然大小的无符号整数",它在现代平台上经常(但绝不总是)32位。

<stdint.h>是C99中的标准头,它应该使用uint32_t命名约定为特定大小的整数提供类型定义。

您正在查看的<types.h>似乎是非标准的,可能属于您的项目正在使用的某个框架。其uint32 typedef与uint32_t兼容。您是否应该在代码中使用其中一个是您的经理的问题。