我知道在C
中sizeof
运算符的返回类型是size_t
是在<stdint.h>
中定义的无符号整数类型。这意味着它的最大尺寸应该是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的实现是完全有效的。
引用你引用的参考文献:
其实现定义的值等于或大于的大小(绝对值),与下面给出的相应值具有相同的符号。