C类型之间的区别int32_t int_least32_t等

时间:2013-12-04 11:01:43

标签: c types stdint

我曾经读过int32_t是32位长,int_least32_t只有至少32位,但是我的stdint.h中有两个相同的typedef:

typedef int  int_least32_t;

typedef int  int32_t;

那么区别在哪里?他们完全一样......

2 个答案:

答案 0 :(得分:1)

为什么你认为在另一台具有不同处理器,不同操作系统,不同版本的C标准库的计算机上你会看到这个typedef?

这两种类型正是你所写的。其中一个是32位,另一个类型至少是32位。因此,其中一种可能的情况是,当它们都是32位时,根据您的特定情况,您可以在stdint.h中看到它。在另一个系统上,您可能会发现它们是不同的。

答案 1 :(得分:1)

int32_t是有符号整数类型,宽度正好为32位,没有填充位,负值使用2的补码。 int_least32_t是最小的有符号整数类型,宽度至少为32位。 仅当实现直接支持该类型时才提供这些。

您看到的typedef意味着在您的环境中,标准int类型本身都满足这些要求。这并不意味着这些typedef在不同的环境中是相同的。