size_t と std::size_t の違い 質問する

size_t と std::size_t の違い 質問する

これらを宣言する場所、使用すべきタイミング、その他の差別化機能に関して、size_tこれら 2つの違いは何ですか?std::size_t

ベストアンサー1

Csize_tと C++ はstd::size_tどちらも同じです。

Cでは、で定義され<stddef.h>、C++では、で定義され、<cstddef>その内容はCヘッダーと同じです(以下の引用を参照)。次のように定義されます。符号なし整数型結果のサイズオペレーター。

C規格の§17.7/2では、

size_tは符号なし整数型結果のサイズオペレーター

そしてC++標準cstddefでは、§18.1/3で(ヘッダーについて)こう述べています。

内容は標準Cライブラリヘッダー<stddef.h>と同じです。以下の変更を加えた

つまり、両方とも同じです。唯一の違いは、C++では名前空間size_tで定義されることですstd

また、上の行には次のようにも書かれていることにも注意してください。「以下の変更を伴って」これは を参照しているわけではありませんsize_t。むしろ、同じヘッダーで定義されている、C++ によって言語に追加された新しい機能 (C には存在しない) を参照しています。


Wikipedia には、以下の範囲とストレージ サイズに関する非常に優れた情報が掲載されていますsize_t

size_t の範囲とストレージサイズ

実際ののタイプsize_tプラットフォーム依存; はよくある間違いsize_tは と同じであると仮定することでありunsigned int、これは例えば32ビットアーキテクチャから64ビットアーキテクチャに移行するときにプログラミングエラーを引き起こす可能性がある[3][4]。

1999 ISO C 標準 (C99) によれば、size_t少なくとも 16 ビットの符号なし整数型です。

残りは以下からお読みくださいこのページWikipediaで。

おすすめ記事