我曾经读过int32_t是32位长,int_least32_t只有至少32位,但是我的stdint.h中有两个相同的typedef:
typedef int int_least32_t;
和
typedef int int32_t;
那么区别在哪里?他们完全一样......
答案 0 :(得分:1)
为什么你认为在另一台具有不同处理器,不同操作系统,不同版本的C
标准库的计算机上你会看到这个typedef?
这两种类型正是你所写的。其中一个是32位,另一个类型至少是32位。因此,其中一种可能的情况是,当它们都是32位时,根据您的特定情况,您可以在stdint.h
中看到它。在另一个系统上,您可能会发现它们是不同的。
答案 1 :(得分:1)
int32_t
是有符号整数类型,宽度正好为32位,没有填充位,负值使用2的补码。
int_least32_t
是最小的有符号整数类型,宽度至少为32位。
仅当实现直接支持该类型时才提供这些。
您看到的typedef意味着在您的环境中,标准int
类型本身都满足这些要求。这并不意味着这些typedef在不同的环境中是相同的。