C
でsizeof
演算子の戻り値の型はsize_t
で定義されている<stdint.h>
で定義されている符号なし整数型であることを知っています。つまり、その最大サイズは65535
standard 7.18. に記載されている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
誤解の背後になぜ違いや理由があるのかを理解する助けになります。
標準では、SIZE_MAX
は、少なくとも65535でなければなりません。
上限は指定されておらず、gccの実装は完全に有効です。
引用した引用を引用する(強調を追加):
その実装定義の値は、等しいかそれ以上の大きさ(絶対値)が、以下に示す対応する値と同じ符号であるものとします。