基本的Delphi类型如何相互关联?

前端之家收集整理的这篇文章主要介绍了基本的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.无符号,有字节,WORD和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中如何定义各种数值类型?)

解决方法

带符号的一字节整数类型为ShortInt.你可以记住它的大小,因为它与普通的C类型的实现不一样.

关于资本化,首字母大写. The documentation倾向于将“int”部分放在小写字母的末尾,就像在Longint中一样,但是我认为更常见的是使用它.除非您使用Platform SDK类型,并且希望您的代码显示其C根,否则不要在所有资本中编写类型;否则我会写Word和DWord,Long和ULong等)

Delphi 2009,也许更早,已经定义了像Int8UInt32这样的类型.关于如何定义Int和UInt,我会说不要.您使用的语言已经定义了整数和基数;不要引入新的类型名称.保留你已经拥有的名字,然后其他人都会知道你在说什么. (此外,Int已经是系统单元中的功能.)

当你想要一个无符号的类型并且不关心它的大小时使用红衣主教;当变量必须正好是四个字节时使用LongWord.对于整数和长整型也是如此.当您想要一个四字节无符号类型时使用红衣主教;当您想要一个通用的无符号类型并且不关心大小时使用LongWord.同样对于整数和LongInt,如今.如果你正在编写16位代码,当你需要四个字节时使用LongInt,当你不在乎大小时使用整数;在Delphi和Turbo Pascal的16位日子里,红衣主教和LongWord并不存在.

多年来的共同智慧是,整数和Cardinal将在64位编译器上成为64位类型,但显然不是这样.相反,they will remain 32-bit types,就像他们在微软C的同行一样.此外,将有一种新型的NativeInt,它将是64位编译器中的64位类型. LongInt和LongWord类型将成为64位类型,因为它们始终与指针类型相同,即使在16位时也是32位.

猜你在找的Delphi相关文章