C类型之间的区别int32_t int_least32_t等

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

typedef int int_least32_t; 

 typedef int int32_t; 

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

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

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

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

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