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

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

DDD
DDDオリジナル
2025-01-01 04:50:10171ブラウズ

Is 'long' Really 64-bits on 64-bit Windows?

64 ビット Windows の 'long' のビット サイズについて

質問:

矛盾する情報は、' 「long」は、64 ビット Windows マシンでは 64 ビットではない可能性があります。これは本当ですか?また、プログラマは代わりに何を使用する必要がありますか?

答え:

答えは、64 ビット プラットフォームでのさまざまな整数サイズの配置を調べることにあります:

ILP64 (Int、Long、ポインタは64 ビット)

  • すべての整数データ型とポインターは 64 ビットです。

LP64 (Long、ポインターは 64 ビット)

  • Long 型とポインター型は 64
  • Int およびその他の整数型は 32 ビットのままです。

LLP64 (Long Long、ポインタは 64 ビット)

  • これは Microsoft が 64 ビットで使用するスキームですWindows。
  • long long 型とポインター型は 64 ビットです。
  • int とlong は 32 ビットのままです。

Windows への影響:

64 ビット Windows では、「long」は確かに 32 です他の 64 ビット プラットフォームとは異なります。 Microsoft は、既存の 32 ビット アプリケーションとの互換性を確保するために LLP64 スキームを採用しました。

推奨事項:

プラットフォーム中立のコードを確保するには、 header:

  • int32_t (32 ビット整数の場合)
  • int64_t (64 ビット整数の場合)
  • uintptr_t (ポインターの場合)

次の場合は注意してくださいシステム タイプを使用する (例: 'long') はプラットフォームによって異なる可能性があるためです。 intptr_t は、2 つの uintptr_t 値を減算した結果としてのみ使用してください。

結論:

64 ビット Windows 上の 'long' のビット サイズは 32 ビットであり、次の値から外れています。他の多くの 64 ビット システムで使用されている LP64 スキーム。プラットフォーム固有の複雑さを回避するには、プログラマはプラットフォームに依存しない整数型を採用し、システム型を慎重に扱う必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。