int のサイズはどのように決定されますか?
int のサイズがプロセッサに依存するというのは本当ですか。32 ビット マシンの場合は 32 ビット、16 ビット マシンの場合は 16 になります。
私のマシンでは、64 ビット プロセッサと 64 ビット Ubuntu がインストールされていますが、32 ビットとして表示されます。
int のサイズはどのように決定されますか?
int のサイズがプロセッサに依存するというのは本当ですか。32 ビット マシンの場合は 32 ビット、16 ビット マシンの場合は 16 になります。
私のマシンでは、64 ビット プロセッサと 64 ビット Ubuntu がインストールされていますが、32 ビットとして表示されます。
実装に依存します。C標準が保証する唯一のことは、
sizeof(char) == 1
と
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
charまた、少なくとも 8 ビットの長さ、int少なくとも 16 ビットなどを意味する、型の表現可能な最小値もいくつかあります。
そのため、実装 (コンパイラ、OS など) によって決定され、文書化される必要があります。
コンパイラに依存します。
例:古いターボCコンパイラを試してください。コンパイラの作成時のワードサイズ(プロセッサが最小限の労力で対処できるサイズ)が16だったため、intのサイズは16ビットになります。
できるだけint広くすることは最良の選択ではありません。(選択はABI設計者によって行われます。)
x86-64 のような 64 ビット アーキテクチャは で効率的に動作するため、 が 64 ビットであることはint64_t自然なことです。long(Microsoft はlongx86-64 ABI で 32 ビットを維持しました。これは、既存のコードベースと API を考えると理にかなっているさまざまな移植性の理由からです。実際に型のサイズを気にする移植可能なコードは、 and について仮定する代わりに and を使用する必要があるため、これは基本的に無関係int32_tです。 )int64_tintlong
int多くの場合、実際にはbeをint32_t使用することで、より優れた効率的なコードを作成できます。int要素ごとに 4B しか使用しない配列は、 の配列の半分のキャッシュ フットプリントしかありませんint64_t。また、x86-64 に固有の 32 ビット オペランド サイズがデフォルトであるため、64 ビット命令には REX プレフィックス用に追加のコード バイトが必要です。したがって、コード密度は、16 ビットまたは 64 ビットよりも 32 ビット (または 8 ビット) の整数の方が優れています。(ドキュメント、ガイド、学習リソースへのリンクについては、 x86 wiki を参照してください。)
プログラムが正しく動作するために 64 ビット整数型を必要とする場合、プログラムは を使用しませんint。(ポインターを anintではなくan に格納するのintptr_tはバグであり、そのような壊れたコードに対応するために ABI を悪化させるべきではありません。)intほとんどのプラットフォームはそのように動作するため、プログラマーはおそらく 32 ビット型を期待していました。(もちろん、標準は16ビットのみを保証しています)。
int一般に (32 ビット プラットフォームなどで) 64 ビットになることは期待されておらず、64 ビットにすると一部のプログラムが遅くなる (ほとんどのプログラムは高速にならない) ため、intほとんどの 64 ビット ABI では 32 ビットです。
int32_tまた、for であるためには、32 ビット整数型の名前が必要typedefです。
プライマリ コンパイラに依存します。ターボ c を使用している場合は、整数サイズが 2 バイトであることを意味します。GNU gccompiler を使用している場合は、整数サイズが 4 バイトであることを意味します。Cコンパイラでの実装のみに依存しています。
整数のサイズは、基本的にシステムに依存しarchitectureます。一般に、16-bitマシンを使用している場合compilerは、int をサポートする必要がありsize 2 byte.
ます。システムが 32 ビットの場合、コンパイラは整数の 4 バイトをサポートする必要があります。
詳しくは、
data busはい、16ビット、32ビットの概念はsize of data bus、あなたのシステムでは何も意味しません。x06->16-bit->DOS->turbo c->size of int->2 byte x306->32-bit>windows/Linux->GCC->size of int->4 byte
はい。 intサイズはコンパイラのサイズに依存します。16 ビット整数の場合、整数の範囲は -32768 ~ 32767 です。32 ビットおよび 64 ビット コンパイラの場合は増加します。