変数の宣言
変数の宣言を以下にまとめておきます。(VSのヘルプでは情報が分散しており、ちょっと見るときに不便なので。)
整数
以下の記載はすべてVS2005でのものです。ANSIに準拠しているとは限らないので、gccなどを使う人は注意してください。(Size Prefixなるものがあることが最初わからなかった)
Win64のVC/VC++では、intやlongは32ビットのままですのでご注意を。
_int64やunsigned _int64はWin32のVC/VC++でも使えます。(32ビットのレジスタを使うことになりますが。)
【8ビットの整数】
変数宣言時の型名(Data Type Name)
char :符号有り8ビット整数
unsigned char :符号なし8ビット整数
定数(Limits on Integer Constants)
CHAR_MIN= -128
CHAR_MAX= 127
UCHAR_MAX= 255
【16ビットの整数】
変数宣言時の型名(Data Type Name)
short :符号有り16ビット整数
unsigned short :符号なし16ビット整数
定数(Limits on Integer Constants)
SHRT_MIN= -32768
SHRT_MAX= 32767
USHRT_MAX= 65535
【32ビットの整数】
変数宣言時の型名(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
【64ビットの整数】
変数宣言時の型名(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 アーキテクチャー上最大の符号なし整数
【MMX/SSE関係】
変数宣言時の型名(Data Type Name)
_m64 MMXの64ビット長レジスタ
_m128 :SSE/SSE2/SSE3の128ビット長レジスタ
【printfでの書式指定文字(Format Specification Fields)】
%[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を使う時のためにメモしておきます。
【Windows Data Types(抜粋)】
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です。
【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のデータ型です。
【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日(土)