delphi – LongInt和Integer,LongWord和Cardinal之间的区别
有时候我发现DWORD的用法是什么呢?
它们在所有版本的Delphi中是否一致?我应该坚持哪一个?
整数和红衣主教不是固定的大小.它们被称为“通用”整数(不要将它与仿制品混淆,仿制品是一双不同的鞋子),即当需要整体类型时,无论尺寸如何,它们都应该优先使用.根据版本和平台,Integer和Cardinal的大小可能不同.目前,它们与Longint和Longword的大小和类型相同.
固定大小类型的大小在版本或平台之间没有差异.您应该使用这些类型,您必须与自己的程序之外的其他来源的代码或数据进行交互,换句话说,确切的二进制兼容性很重要,例如,调用API函数时.因此使用像DWORD等类型.
请注意,当前版本具有Byte或Smallint等类型的别名.它们是Int8,UInt8,Int16,UInt16等……直到UInt64. ISTM这些名称比以下更容易记住“Smallint”(16位签名)或“Shortint”(8位签名).
因此,只要可能,就使用Integer和Cardinal,因为这些可能是平台和版本的理想类型.使用固定大小的类型,如Byte,Smallint,Longint或UInt64,仅举几例,当需要与其他数据完全二进制兼容时.
更新
由于存在一些混淆(见顶部附近的链接),并且因为现在不再将Longint和Longword视为固定大小的平台独立,但是,奇怪的是,Integer和Cardinal被认为是固定大小,我越来越倾向于使用(U)像UInt16或Int32这样的IntXX版本.一个例外是我使用Byte,我无法想象它会改变它的大小(1).
当然,我会使用整数和红衣主教来做任何需要整体类型的东西,其尺寸不是那么重要,例如:用于循环计数器等
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2017-03-05 [代码]Delphi实现窗体内嵌其他应用程序窗体
2017-03-05 delphi 的 LockType 锁类型