C++Builder における 64 ビット OS のデータ型と 32 ビット OS のデータ型の相違点と類似点に関しての情報がありました。以下がそれをまとめた表です。Embacaderoのヘルプからの引用です。
整数型
Win64 では、System::NativeInt/ssize_t は、Win32 の System::NativeInt/ssize_t の 2 倍のサイズです。
同様に、System::NativeUInt/ssize_t は、Win32 の System::NativeUInt/size_t の 2 倍のサイズです。
符号付き整数 | 符号なし整数 | C++/32 | C++/64 |
---|---|---|---|
signed char | System::Byte、unsigned char | 1 バイト | 1 バイト |
System::Smallint、short | System::Word、unsigned short | 2 バイト | 2 バイト |
System::LongInt、signed long | System::LongWord、unsigned | 4 バイト | 4 バイト |
System::Integer、int | System::Cardinal、unsigned int | 4 バイト | 4 バイト |
System::Int64、unsigned __int64、long long | System::UInt64、unsigned __int64、unsigned long long | 8 バイト | 8 バイト |
System::NativeInt, ssize_t | System::NativeUInt, size_t | 4 バイト | 8 バイト |
System ユニットのメンバ(たとえば System::Byte など)を使用する場合は、#include <System.hpp>
の記述が必要です。
ポインタ型
64 ビット版 Windows では、ポインタ型はすべて 8 バイト(32 ビット版 Windows のサイズの 2 倍)です。
ポインタ型 | C++/32 | C++/64 |
---|---|---|
System::Pointer、void* | 4 バイト | 8 バイト |
SystemString、SystemUnicodeString | ||
System::TObject | ||
System::TClass | ||
SystemIInterface、SystemDelphiInterface | ||
SystemAnsiString、SystemAnsiStringT | ||
System::WideString | ||
System::UnicodeString | ||
System::DynamicArray | ||
System::PAnsiChar | ||
System::PWideChar | ||
System::PChar |
浮動小数点型(Extended 型を含む)
xtended 型は、64 ビット版 Windows では、2 バイト分精度が低くなります。
詳細については、「4 ビット Windows システムでは Extended データ型のサイズは 2 バイト小さい」を参照してください。
その他の型 | C++/32 | C++/64 | 解説 |
---|---|---|---|
System::Boolean、bool | 1 バイト | ||
System::ByteBool、unsigned char | 1 バイト | ||
System::WordBool、unsigned short | 2 バイト | ||
System::LongBool、unsigned int | 4 バイト | ||
System::AnsiChar、char | 1 バイト | ||
System::WideChar、wchar_t | 2 バイト | ||
System::Char、wchar_t (Windows)、char16_t (macOS) | 2 バイト | ||
System::ShortString | 256 バイト | ||
Variant/OleVariant | 16 バイト | 24 バイト |
定数内の接尾辞
サイズを整数型に対して指定することができます(メモリで占有されるビット数)。
適切な接尾辞(i16、ui32、など)を拡張整数定数に使用しなければなりません。
種類 | 定数内の接尾辞 | 例 | 領域 |
---|---|---|---|
__int8 | i8 | __int8 c = 127i8; | 8 ビット |
unsigned __int8 | ui8 | unsigned __int8 c = 240ui8; | 8 ビット |
__int16 | i16 | __int16 s = 32767i16; | 16 ビット |
unsigned __int16 | ui16 | unsigned __int16 s = 64532ui16; | 16 ビット |
__int32 | i32 | __int32 i = 123456789i32; | 32 ビット |
unsigned __int32 | ui32 | unsigned __int32 i = 223456789ui32; | 32 ビット |
__int64 | i64 | __int64 big = 12345654321i64; | 64 ビット |
unsigned __int64 | ui64 | unsigned __int64 hugeInt = 1234567887654321ui64; | 64 ビット |
64 ビット Windows データ型と 32 ビット Windows データ型の比較 - RAD Studio
基本型 - RAD Studio
拡張整数型: __int8、__int16、__int32、__int64 - RAD Studio