重複の可能性:
Cのintは常に32ビットですか?
AFAIK、Pascalの整数のサイズはプラットフォームによって異なります(32ビットコンピューターでは32ビット、64ビットコンピューターでは64ビットです)。
これはCでも同じですか(つまり、32ビットコンピューターでは32ビット、64ビットでは64です)?
重複の可能性:
Cのintは常に32ビットですか?
AFAIK、Pascalの整数のサイズはプラットフォームによって異なります(32ビットコンピューターでは32ビット、64ビットコンピューターでは64ビットです)。
これはCでも同じですか(つまり、32ビットコンピューターでは32ビット、64ビットでは64です)?
ほとんどですが、コンパイラーが制御できます。sizeof
環境で何が起こっているかを確認したいだけの場合は、演算子を使用してください。stddef.h にはint64_t
、バイト数が固定されていることを確認し、これを環境/コンパイラに任せない必要がある場合、(そのファイルにあると思います) のような型が含まれます。
これは、プロセッサ アーキテクチャだけでなく、オペレーティング システムにも依存します。C 言語仕様では整数型のサイズについて言及されていないため、この作業は言語の実装者の仕事です。詳細な背景については、ここで最も投票された回答を見てください。
64 ビット Windows での long のビット サイズは?
要約すると、Linux と Windows の両方で、「int」は 32 ビットになります。他のプラットフォームについては、C コンパイラのドキュメントで仕様を確認する必要があります。ただし、ベスト プラクティスは、<inttypes.h>
-- uint32_t
、int32_t
、uint64_t
にある型を使用することint64_t
です。
Windows では、少し難しいです。inttypes.h
Visual C++ が準拠を主張していない C99 の一部です。http://code.google.com/p/msinttypes/inttypes.h
などのプロジェクトから取得するか、 -- 、、を使用できます。また、追加のヘッダー ファイルを必要としない Microsoft 拡張機能、、、、もあります 。<windows.h>
INT32
INT64
UINT32
UINT64
__int32
__int64
__uint32
__uint64
C は整数型のサイズを定義しません。コンパイラのマニュアルを読む必要があります
唯一のルールは sizeof char <= sizeof short <= sizeof int <= sizeof long です
その決定はコンパイラによって行われます。これを入力すると、特定のケースでの整数のサイズをバイト単位で確認できますprintf("%d", (int)sizeof(int));
。
int
ただし、特定の金額のサイズに依存するコードを記述しないことを強くお勧めします。
それは正しい。プラットフォームによって異なります。
ただし、最近の通常の方法は、int
32 ビットまたは 64 ビットのコンピューターで 32 ビットを作成することです。long int
タイプは 64 ビットのコンピューターではlong long int
64 ビットであり、32 ビットのコンピューターでもタイプは 64 ビットです。
@E_Net4 が正しく観察しているように、C++ 標準では、上記の回答からかなりの変更が許可されています。これは、今日の通常の慣行のみを示しています。(C++ 標準では、特定のプロセッサのパフォーマンスを最大化する方法で、int
およびlong int
は言うまでもなく、コンパイラが自由に定義できるようにすることを望んでいるため、このようなバリエーションが許可されています。)short int