4

我曾经读过 int32_t 正好是 32 位长,而 int_least32_t 至少只有 32 位,但它们在我的 stdint.h 中都有相同的 typedef:

typedef int  int_least32_t;

typedef int  int32_t;

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

4

2 回答 2

2

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

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

于 2013-12-04T11:13:05.527 回答
0

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

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

于 2013-12-04T11:10:19.400 回答