本日、Code Reviewのレビューで興味深い点に出会いました。@Veedracはにrecommened この回答可変サイズの種類(たとえばことint
とがlong
)のような固定サイズの種類に置き換えることuint64_t
とuint32_t
。その答えのコメントからの引用:
intおよびlongのサイズ(およびそれらが保持できる値)はプラットフォームに依存します。一方、int32_tは常に32ビット長です。intを使用するということは、コードがプラットフォームごとに異なる動作をすることを意味しますが、これは一般的には望んでいないことです。
共通の型を修正しないという標準の背後にある理由は、@ supercatによって部分的に説明されています。Cは、当時システムプログラミングに通常使用されていたアセンブリとは対照的に、アーキテクチャ間で移植できるように作成されました。
設計意図はもともと、int以外の各タイプがさまざまなサイズの数を処理できる最小のものであり、そのintが+/- 32767を処理できる最も実用的な「汎用」サイズであると思いました。
私については、私はいつも使用int
しており、代替案についてはあまり心配していません。私はいつも、これが最高のパフォーマンス、ストーリーの終わりを持つ最もタイプだと思っていました。固定幅が便利だと思った唯一の場所は、ストレージ用またはネットワーク経由の転送用にデータをエンコードする場合です。他の人が書いたコードで固定幅タイプを見ることはめったにありません。
私は70年代に行き詰まっint
ていますか、それともC99以降の時代に使用する理論的根拠はありますか?