変数の宣言を以下にまとめておきます。(VSのヘルプでは情報が分散しており、ちょっと見るときに不便なので。)
■整数
(本記事の初稿は2004年です。64ビットが当たり前の現在でも有用と思われるので、そのままの内容で公開します。)以下の記載はすべてVS2005でのものです。ANSIに準拠しているとは限らないので、gccなどを使う人は注意してください。(Size Prefixなるものがあることが最初わからなかった)Win64のVC/VC++では、intやlongは32ビットのままですのでご注意を。_int64やunsigned _int64はWin32のVC/VC++でも使えます。(32ビットのレジスタを使うことになりますが。)
変数宣言時の型名(Data Type Name) char :符号有り8ビット整数 unsigned char :符号なし8ビット整数 定数(Limits on Integer Constants) CHAR_MIN= -128 CHAR_MAX= 127 UCHAR_MAX= 255
変数宣言時の型名(Data Type Name) short :符号有り16ビット整数 unsigned short :符号なし16ビット整数 定数(Limits on Integer Constants) SHRT_MIN= -32768 SHRT_MAX= 32767 USHRT_MAX= 65535
変数宣言時の型名(Data Type Name) int :符号有り32ビット整数 unsigned int :符号なし32ビット整数 long :符号有り32ビット整数 unsigned long :符号なし32ビット整数 定数(Limits on Integer Constants) INT_MIN= –2147483648 INT_MAX= 2147483647 UINT_MAX= 4294967295 LONG_MIN= –2147483648 LONG_MAX= 2147483647 ULONG_MAX= 4294967295
変数宣言時の型名(Data Type Name) _int64 :符号有り64ビット整数 unsigned _int64 :符号なし64ビット整数 long long :符号有り64ビット整数 定数(Limits on Integer Constants) _I64_MIN= -9223372036854775808 _I64_MAX= 9223372036854775807 _UI64_MAX= 18446744073709551615
変数宣言時の型名(Data Type Name) _size_t アーキテクチャー上最大の符号有り整数 _ssize_t アーキテクチャー上最大の符号なし整数
変数宣言時の型名(Data Type Name) _m64 MMXの64ビット長レジスタ _m128 :SSE/SSE2/SSE3の128ビット長レジスタ
%[flags] [width] [.precision] [{h | l | ll | I | I32 | I64}]type flags:説明省略 width:説明省略 .precison:説明省略 Size Prefixes for printf and wprintf Format-Type Specifiers: h: short, unsigned short l: long, unsigned long ll: long long I32: _int32, unsigned _int32 I64: _int64, unsigned _int64 type:(printf Type Field Characters) d: 符号有り10進数 i: 符号有り10進数 o: 符号なし8進数 u: 符号なし10進数 x: 符号なし16進数(abcdef) X: 符号なし16進数(ABCDEF) 例: _int64 num64; unsigned _int64 unum64; .. printf("%I64d %I64u", num64, unum64)
以下のデータ型は言語仕様としてのものではなく、Windowsのデータ型です。
Windows APIを使う時のためにメモしておきます。
CHAR 符号有り 8ビット整数 UCHAR 符号なし 8ビット整数 SHORT 符号有り16ビット整数 USHORT 符号なし16ビット整数 INT 符号有り32ビット整数 UINT 符号なし32ビット整数 LONG 符号有り32ビット整数 ULONG 符号なし32ビット整数 LONGLONG 符号有り64ビット整数 ULONGLONG 符号なし64ビット整数 DWORD32 符号なし32ビット整数 DWORD64 符号なし64ビット整数 INT32 符号有り32ビット整数 INT64 符号有り64ビット整数 LONG32 符号有り32ビット整数 LONG64 符号有り64ビット整数 UINT32 符号なし32ビット整数 UINT64 符号なし64ビット整数 ULONG32 符号なし32ビット整数 ULONG64 符号なし64ビット整数
64ビット整数を扱うためのWin32 APIです。
LONGLONG Int32x32To64( LONG Multiplier, LONG Multiplicand ); ULONGLONG UInt32x32To64( DWORD Multiplier, DWORD Multiplicand ); ULONGLONG Int64ShllMod32( ULONGLONG Value, DWORD ShiftCount ); LONGLONG Int64ShraMod32( LONGLONG Value, DWORD ShiftCount ); ULONGLONG Int64ShrlMod32( ULONGLONG Value, DWORD ShiftCount ); int MulDiv( int nNumber, int nNumerator, int nDenominator ); LARGE_INTEGER 64ビット長整数(符号有り)を格納する構造体 ULARGE_INTEGER 64ビット長整数(符号なし)を格納する構造体
■ポインタ
Win64では、ポインタはすべて64ビット長です。(void *は64ビット長)以下のデータ型は言語仕様としてのものではなく、Windowsのデータ型です。
DWORD_PTR INT_PTR UINT_PTR LONG_PTR ULONG_PTR SIZE_T SSIZE_T HALF_PTR UHALF_PTR POINTER_32 POINTER_64 LPCVOID LPDWORD LPINT LPLONG LPVOID LPWORD PDWORD PINT PLONG PUSHORT PVOID PWORD
起草日:2004年9月25日(土)(www.marbacka.net内の別のサイトで公開)
最終更新日:2017年2月19日(日)