我知道C
sizeof
运算符的返回类型size_t
是<stdint.h>
中定义的无符号整数类型。这意味着65535
标准7.18.3中所述的最大尺寸应为C99
:
limit of size_t
SIZE_MAX 65535
但在gcc-4.8.2
标题文件stdint.h
中,其定义的大小远远大于65535
与C99
标准中所述相矛盾的大小,如下所示,
/* Limit of `size_t' type. */
# if __WORDSIZE == 64
# define SIZE_MAX (18446744073709551615UL)
# else
# define SIZE_MAX (4294967295U)
# endif
请帮助我理解为什么在我的误解背后存在差异或原因。
答案 0 :(得分:45)
标准规定SIZE_MAX
必须至少 65535。
它没有指定上限,而gcc的实现完全有效。
引用您引用的参考文献(强调添加):
其实现定义值的大小(绝对值)等于或大于,其值与下面给出的相应值相同,且符号相同。