size_t的最大大小
我知道在C
返回类型的sizeof
运算符是size_t
是定义的无符号整数类型。 这意味着它的最大尺寸应为
65535
如C99
标准7.18.3所述 :
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
请帮助我理解为什么在我的误解背后存在差异或原因。
该标准规定SIZE_MAX
必须至少为 65535。
它没有指定上限,gcc的实现完全有效。
引用你引用的参考文献(重点补充):
其实现定义值的大小(绝对值)应等于或大于下面给出的相应值,并使用相同的符号。
我会建议当前最大的(无符号)的演员阵容如下:
#define SIZE_T_MAX size_t(0xffffffffffffffffULL)
这应该为32位和64位编译提供相关结果。