Delphi уже давно поддерживает несколько базовых числовых типов, и мне было интересно, как они связаны друг с другом.
В Delphi 2007 я нашел эти объявления (некоторые конфликтуют, некоторые из них являются просто aliasses):
Types.pas:
DWORD = LongWord;
Largeint = Int64;
getmem.inc:
DWORD = Integer;
Windows.pas:
DWORD = Types.DWORD;
SHORT = Smallint;
UINT = LongWord;
ULONG = Cardinal;
LONGLONG = Int64;
TLargeInteger = Int64;
ULONGLONG = UInt64;
Это приводит меня к мысли, что базовые числовые типы, основанные на подписке, - SmallInt, Integer и Int64. Без подписи, там Byte, WORD и UInt64. Но в чем разница между кардиналом и Лонгвором? (Кстати, какой исходный и предназначенный для этих типов корпус?)
И есть ли тип для подписанных 8-битных целых чисел (Int8)?
// Int8 = ?unknown?;
UInt8 = Byte;
Int16 = SmallInt;
UInt16 = Word;
Int32 = Integer;
UInt32 = LongWord;
// Int64 already exists
// UInt64 already exists
Наконец, как мне определить Int и UInt, особенно в отношении совместимости с C/С++ и будущего перехода на другие платформы (возможно, также на 64 бит)? (Связанный с этим вопрос, конечно, каким образом будут определены различные числовые типы в 64-разрядном Delphi?)