__int64

読み:アンダースコア・アンダースコア・イント・ろくじゅうよん
外語:__int64 英語
品詞:名詞

Microsoft C/C++が独自拡張で定義した予約語で、64ビット長の符号付き整数を宣言する。C/C++非標準の変数型だが、Borland C++Builder、その他の環境でこの変数型に対応している。

目次

物理的なサイズが明示された変数型であるため、異なるプラットフォーム間での移植性が向上するらしい。

符号無しはunsigned __int64とすることで使用できる。

C/C++標準およびGCCでは、一般的な型ではlong long型が事実上対応すると考えられる(但し、64ビット長という保証はない)。また、C99C++11からはint64_t(およびuint64_t)が相当する型として実装依存として追加されており、実装によって追加することが認められている。

なお、古いVisual C++(Visual Studio 6.0など)では、__int64 には対応するが long long は未対応である。

32ビット環境でも利用可

64ビット長の変数であるが、32ビット環境(Win32)でも使用できる。

64ビット環境ならレジスター1本で済むが32ビットではそうはいかないので、メモリーを介した演算として内部で処理されている。従って、演算の手間が多いことから処理速度は遅いと考えられる。

実際に、__int64に対応したVisual C++での32ビット環境での出力を例に挙げる。

__int64 num;

num = 0x1122334455667788i64;

上の、__int64変数への代入は、下のように出力される。

_num$ = -8

mov DWORD PTR _num$[ebp], 1432778632

mov DWORD PTR _num$[ebp+4], 287454020

次に、この変数のインクリメントを例とする。

num++;

上の、インクリメントは、下のように出力される。

mov eax, DWORD PTR _num$[ebp]

add eax, 1

mov ecx, DWORD PTR _num$[ebp+4]

adc ecx, 0

mov DWORD PTR _num$[ebp], eax

mov DWORD PTR _num$[ebp+4], ecx

このように、内部では32ビット×2で処理されていることが分かる。

なお、Visual C++の場合、__int64もlong longも、(確認した範囲では)全く同じコードを出力している。

サフィックス

数値の型を表わすサフィックスは、非標準だが次のものが使われる。

  • i64またはI64 (signed)
  • ui64またはUI64 (unsigned)

printf

printfのフォーマット文字列は、次のようなものを用いる。

  • C/C++標準
    • %lld、%lli、%llo、%llx、%llX (signed)
    • %llo、%llu、%llx、%llX (unsigned)
  • Visual C++系の実装
    • %I64d、%I64i、%I64o、%I64x、%I64X (signed)
    • %I64o、%I64u、%I64x、%I64X (unsigned)

Microsoft Visual C++ 2003では、%llx等では値を正常に表示できない。Microsoftの実装で対応するのはMicrosoft Visual C++ 2005以降である。

符号

__int64は、標準ではsignedである。

unsigned __int64として使用すると、符号無しの64ビット長変数となる。

マクロ定数

limits.hにおいて以下の3個のマクロ定数が定義されている。これを利用すると、その環境での長さを得ることができる。

_I64_MIN
__int64型の最小値 (例えば-9223372036854775807i64 - 1)
_I64_MAX
__int64型の最大値 (例えば9223372036854775807i64)
_UI64_MAX
unsigned __int64型の最大値 (例えば0xffffffffffffffffui64)

関連

Delphi(Pascal)では、signed __int64はInt64型が対応する。unsigned __int64は恐らく対応型が無い。

用語の所属
整数型
関連する用語
WPARAM
LPARAM
LRESULT
__int3264
__int8
__int16
__int32

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club