C类型int32\u t int\u至少32\u t等之间的差异

C类型int32\u t int\u至少32\u t等之间的差异,c,types,stdint,C,Types,Stdint,我曾经读过,int32_t的长度为32位,至少32位,但它们在我的stdint中都有相同的typedef。h: typedef int int_least32_t; 及 那么区别在哪里呢?它们完全相同…为什么你认为在另一台拥有不同处理器、不同操作系统、不同版本的C标准库的计算机上,你会看到这种类型的定义 这两种类型正是您编写的。其中一种是32位,另一种至少是32位。因此,其中一种可能的情况是,它们都是32位,在您的特定情况下,您可以在stdint.h中看到它。在另一个系统上,您可能会看到它们

我曾经读过,int32_t的长度为32位,至少32位,但它们在我的stdint中都有相同的typedef。h:

typedef int  int_least32_t;


那么区别在哪里呢?它们完全相同…

为什么你认为在另一台拥有不同处理器、不同操作系统、不同版本的
C
标准库的计算机上,你会看到这种类型的定义


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

int32\u t
是一种有符号整数类型,其宽度正好为32位,没有填充位,并使用2的补码表示负值。
int\u least32\u t
是宽度至少为32位的最小有符号整数类型。 仅当实现直接支持该类型时才提供这些


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

因此在您的系统上,
int
是至少32位的最佳类型,并且正好是32位。所以一切都很好。@glglgl这里什么是“最好的”?@Mauris它的意思是最短的。原则应该是“尽可能短,但需要多长就多长”。因为我认为如果我安装gcc,我会得到相同的include,并且我认为stdlib适用于x86计算机上gcc的每一个32位发行版。为什么这些类型在其他机器上不同?我想如果我将一个var声明为int,它的长度正好是32位。我一直认为它依赖于gcc构建“内置”类型的长度。@Sebi2020 C是一种跨平台的高级语言,试图尽可能接近低级语言。因此,该标准不提供基本类型的大小,并允许编译器的维护人员为基本类型选择最佳表示。长话短说,它们只需要关系:| char|
typedef int  int32_t;