2024/06/03 電子書籍「電子書籍出版・技術文書作成を劇的に加速!秀丸エディタ + Markdown + Pandocの驚異」を出版

C++Builder の 32 ビットおよび 64 ビット Windows の組み込み型のサイズ

C++Builder

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++/32C++/64
signed charSystem::Byte、unsigned char1 バイト1 バイト
System::Smallint、shortSystem::Word、unsigned short2 バイト2 バイト
System::LongInt、signed longSystem::LongWord、unsigned4 バイト4 バイト
System::Integer、intSystem::Cardinal、unsigned int4 バイト4 バイト
System::Int64、unsigned __int64、long longSystem::UInt64、unsigned __int64、unsigned long long8 バイト8 バイト
System::NativeInt, ssize_tSystem::NativeUInt, size_t4 バイト8 バイト
整数型

 System ユニットのメンバ(たとえば System::Byte など)を使用する場合は、#include <System.hpp> の記述が必要です。

ポインタ型

64 ビット版 Windows では、ポインタ型はすべて 8 バイト(32 ビット版 Windows のサイズの 2 倍)です。

ポインタ型C++/32C++/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++/32C++/64解説
System::Boolean、bool1 バイト
System::ByteBool、unsigned char1 バイト
System::WordBool、unsigned short2 バイト
System::LongBool、unsigned int4 バイト
System::AnsiChar、char1 バイト
System::WideChar、wchar_t2 バイト
System::Char、wchar_t (Windows)、char16_t (macOS)2 バイト
System::ShortString256 バイト
Variant/OleVariant16 バイト24 バイト
浮動小数点型(Extended 型を含む)

定数内の接尾辞

サイズを整数型に対して指定することができます(メモリで占有されるビット数)。

適切な接尾辞(i16ui32、など)を拡張整数定数に使用しなければなりません。

種類定数内の接尾辞領域
__int8i8__int8 c = 127i8;8 ビット
unsigned __int8ui8unsigned __int8 c = 240ui8;8 ビット
__int16i16__int16 s = 32767i16;16 ビット
unsigned __int16ui16unsigned __int16 s = 64532ui16;16 ビット
__int32i32__int32 i = 123456789i32;32 ビット
unsigned __int32ui32unsigned __int32 i = 223456789ui32;32 ビット
__int64i64__int64 big = 12345654321i64;64 ビット
unsigned __int64ui64unsigned __int64 hugeInt = 1234567887654321ui64;64 ビット
定数内の接尾辞

64 ビット Windows データ型と 32 ビット Windows データ型の比較 - RAD Studio
基本型 - RAD Studio
拡張整数型: __int8、__int16、__int32、__int64 - RAD Studio

タイトルとURLをコピーしました