size_t はなぜ符号なしですか?
質問:
Bjarne Stroustrup は著書の中で次のようにアドバイスしています。正の整数を表すための追加ビットを得るために符号なし整数を使用することに反対します。ただし、配列および文字列のサイズを表すために一般的に使用される型 size_t は符号なしです。これは間違いでしたか、size_t の使用は最小限にすべきでしょうか?
答え:
歴史的な理由により、size_t は署名されていません:
アーキテクチャの制限:
16 ビット ポインターを使用する古いアーキテクチャでは、文字列を 32 KB に制限することは現実的ではありません。これに対処するために、C 標準では、size_t の符号付き対応物である ptrdiff_t の有効範囲が 17 ビットであることが要求されています。
組み込みシステム:
特定の組み込みプログラミングでは
符号なし型の欠点:
しかし、最新の 32 ビットおよび 64 ビット プログラミングでは、符号なし型には大きな欠点があります。 :
結論:
を考慮すると、size_t を unsigned にする決定は間違いではありませんでした。当時の建築上の限界。ただし、現代のプログラミングでは、固有の欠点があるため、数値演算に符号なし型を使用することは強く推奨されません。
以上が既知の欠点があるにもかかわらず、「size_t」が署名されていないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。