size_t的最大大小

时间:2014-03-19 18:20:18

标签: c gcc sizeof c99 size-t

我知道C sizeof运算符的返回类型size_t<stdint.h>中定义的无符号整数类型。这意味着65535标准7.18.3中所述的最大尺寸应为C99

limit of size_t
  SIZE_MAX             65535

但在gcc-4.8.2标题文件stdint.h中,其定义的大小远远大于65535C99标准中所述相矛盾的大小,如下所示,

/* Limit of `size_t' type.  */
# if __WORDSIZE == 64
#  define SIZE_MAX              (18446744073709551615UL)
# else
#  define SIZE_MAX              (4294967295U)
# endif

请帮助我理解为什么在我的误解背后存在差异或原因。

1 个答案:

答案 0 :(得分:45)

标准规定SIZE_MAX必须至少 65535。

它没有指定上限,而gcc的实现完全有效。

引用您引用的参考文献(强调添加):

  

其实现定义值的大小(绝对值)等于或大于,其值与下面给出的相应值相同,且符号相同。