来自ISO/IEC 9899:
7.18.1.2 最小宽度整数类型
1 typedef名称int_leastN_t指定一个带有至少N位宽度的带符号整数类型,使得没有小于指定宽度的带符号整数类型具有至少该宽度。 因此,int_least32_t表示带有至少32位位宽的带符号整数类型。
我为什么要使用这些类型?
当我决定需要哪种类型的变量时,我会问自己:“它可能携带的最大值是多少?”
然后我会找到答案,查看比该值更大的最低2的n次幂,并选择相匹配的确切整数类型。
因此,在这种情况下,我也可以使用最小宽度整数类型。 但是为什么呢?正如我已经知道的那样:它永远不会是更大的值。为什么要采用可能有时甚至超过我所需的东西呢?
我可以想象其他所有情况,包括无效情况,例如:
“我有一个类型,其大小至少为...” - 实现不知道我将获得最大的用户输入是什么,因此在编译时调整类型无法帮助。
“我有一个变量,在运行时无法确定它将容纳多大的值。”
-那么编译器如何在编译时知道呢?-> 它也无法找到适合的字节大小。
那么这些类型的用途是什么?
intN_t
类型都是可选的。因此它们对于可移植代码并不是真正有用的。但是,uint10_t
是标准允许的(N1570: 7.20.1.1.2)。我相信存在一些CHAR_BIT > 8
的系统,但我无法记起它们在今天的相关性如何。 - user694733