Как основные типы Delphi связаны друг с другом?
Delphi уже давно поддерживает несколько базовых числовых типов, и мне было интересно, как они связаны друг с другом.
В Delphi 2007 я обнаружил эти объявления (некоторые из них противоречивы, некоторые - просто алиасы):
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. Без знака есть Байт, СЛОВО и UInt64. Но в чем разница между Cardinal и LongWord? (Кстати, каков оригинальный и предназначенный корпус для этих типов?)
И есть ли тип для 8-разрядных целых чисел со знаком (Int8)?
// Int8 = ?unknown?;
UInt8 = Byte;
Int16 = SmallInt;
UInt16 = Word;
Int32 = Integer;
UInt32 = LongWord;
// Int64 already exists
// UInt64 already exists
Наконец, как мне определить Int и UInt, особенно в отношении совместимости C / C ++ и будущего перехода на другие платформы (возможно, также 64-битные)? (Конечно, связанный вопрос: как будут определены различные числовые типы в 64-битном Delphi?)