Bjarne Stroustrup 氏の見解は、「正の整数を表すためにもう 1 ビットを得るために int の代わりに unsigned を使用することは、ほとんど良い考えではありません」です。
元々、size_t は、DOS システムなどの 16 ビット ポインターを備えたアーキテクチャに対応するために、符号なしで作成されました。文字列サイズの制限を防ぐために、C 標準では、size_t の符号付き対応物である ptrdiff_t を実質的に 17 ビットにすることが義務付けられました。
これらの歴史的な理由は、組み込みシステムにも依然として当てはまる可能性がありますが、最近の 32 ビットおよび 64 ビット プログラミングでは、それほど重要ではありません。これらの環境では、数値に符号なし型を使用することに実際的な利点はなく、C/C の暗黙的な変換ルール (例: where string("Hi").length()
size_t を unsigned にするという決定は間違いではなく、当時の限られたシステムにとっては実用的な選択でした。ただし、現代のプログラミング実践では、typedef int MyType の自己記述的な性質が有益である特定の状況を除いて、インターフェイスおよび数値での符号なし整数の使用を最小限に抑えることが一般的に推奨されます。
以上がC/C で `size_t` が署名されていないのはなぜですか: 歴史的な必要性、それとも現代のバグの磁石?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。