ホームページ > バックエンド開発 > C++ > 64 ビット Windows では「long」は本当に 64 ビットですか?

64 ビット Windows では「long」は本当に 64 ビットですか?

DDD
リリース: 2024-12-28 20:50:18
オリジナル
949 人が閲覧しました

Is `long` Really 64-Bits on 64-Bit Windows?

64 ビット Windows の Long のビット サイズ: 詳細

64 ビット Windows の Long のサイズの問題は次のとおりです。若干の混乱を引き起こした。ドキュメントでは、この環境では Long が実際に 64 ビットであると示唆されていますが、現実はさらに微妙です。

Unix システムの領域では、64 ビット プラットフォーム (主に ILP64) での整数とポインターのサイズについてさまざまな取り決めがあります。そしてLP64。ただし、Microsoft のアプローチは LLP64 では異なります。

ILP64 と LP64 の比較

Type ILP64 LP64 LLP64
char 8 8 8
short 16 16 16
int 64 32 32
long 64 64 32
long long 64 64 64
pointer 64 64 64

最新の 64 ビット Unix システムはすべて LP64 を使用します。ここで、long は 64 ビットです。 MacOS X と Linux はこのカテゴリに分類されます。

LLP64 と 64 ビット Windows

Microsoft の LLP64 スキームでは、変更を加えずに 32 ビット ソフトウェアを再コンパイルすることが優先されます。その結果、64 ビット Windows システムでは:

  • long と int のサイズは 32 ビットのままです
  • 64 ビット整数に新しいデータ型が導入されます

プラットフォーム中立コード

プラットフォームに依存しないコードを実現するには、C99 の型を使用することをお勧めします。ヘッダーは以下を提供します:

  • int8_t ~ int64_t (符号付き整数の場合)
  • uintptr_t (ポインターを格納するための符号なし整数の場合)
  • intmax_t (プラットフォーム上の最大の整数サイズの場合)

これらを使用することでコード内の型を使用すると、さまざまなプラットフォームで特定の整数サイズに依存しないアプリケーションを作成できます。

結論

Unix システムでは通常、long は 64 ビットですが、 64 ビット Windows では、Microsoft の LLP64 アプローチにより 32 ビットのままです。さまざまな整数サイズの規則を理解し、プラットフォームに依存しない型を使用することで、開発者は幅広いシステム間で互換性のあるコードを作成できます。

以上が64 ビット Windows では「long」は本当に 64 ビットですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート