3

重複の可能性:
Cのintは常に32ビットですか?

AFAIK、Pascalの整数のサイズはプラットフォームによって異なります(32ビットコンピューターでは32ビット、64ビットコンピューターでは64ビットです)。

これはCでも同じですか(つまり、32ビットコンピューターでは32ビット、64ビットでは64です)?

4

5 に答える 5

4

ほとんどですが、コンパイラーが制御できます。sizeof環境で何が起こっているかを確認したいだけの場合は、演算子を使用してください。stddef.h にはint64_t、バイト数が固定されていることを確認し、これを環境/コンパイラに任せない必要がある場合、(そのファイルにあると思います) のような型が含まれます。

于 2012-09-04T18:38:40.570 に答える
2

これは、プロセッサ アーキテクチャだけでなく、オペレーティング システムにも依存します。C 言語仕様では整数型のサイズについて言及されていないため、この作業は言語の実装者の仕事です。詳細な背景については、ここで最も投票された回答を見てください。

64 ビット Windows での long のビット サイズは?

要約すると、Linux と Windows の両方で、「int」は 32 ビットになります。他のプラットフォームについては、C コンパイラのドキュメントで仕様を確認する必要があります。ただし、ベスト プラクティスは、<inttypes.h>-- uint32_tint32_tuint64_tにある型を使用することint64_tです。

Windows では、少し難しいです。inttypes.hVisual C++ が準拠を主張していない C99 の一部です。http://code.google.com/p/msinttypes/inttypes.hなどのプロジェクトから取得するか、 -- 、、を使用できます。また、追加のヘッダー ファイルを必要としない Microsoft 拡張機能、、、、もあります 。<windows.h>INT32INT64UINT32UINT64__int32__int64__uint32__uint64

于 2012-09-04T18:43:59.797 に答える
1

C は整数型のサイズを定義しません。コンパイラのマニュアルを読む必要があります

唯一のルールは sizeof char <= sizeof short <= sizeof int <= sizeof long です

于 2012-09-04T18:38:59.290 に答える
1

その決定はコンパイラによって行われます。これを入力すると、特定のケースでの整数のサイズをバイト単位で確認できますprintf("%d", (int)sizeof(int));

intただし、特定の金額のサイズに依存するコードを記述しないことを強くお勧めします。

于 2012-09-04T18:41:47.910 に答える
0

それは正しい。プラットフォームによって異なります。

ただし、最近の通常の方法は、int32 ビットまたは 64 ビットのコンピューターで 32 ビットを作成することです。long intタイプは 64 ビットのコンピューターではlong long int64 ビットであり、32 ビットのコンピューターでもタイプは 64 ビットです。

@E_Net4 が正しく観察しているように、C++ 標準では、上記の回答からかなりの変更が許可されています。これは、今日の通常の慣行のみを示しています。(C++ 標準では、特定のプロセッサのパフォーマンスを最大化する方法で、intおよびlong intは言うまでもなく、コンパイラが自由に定義できるようにすることを望んでいるため、このようなバリエーションが許可されています。)short int

于 2012-09-04T18:39:47.860 に答える