网站开发需要哪些证书,自己想做个网站 费用,哪个网站可以做魔方图片,延吉市网站建设Object Pascal 学习笔记#xff0c;Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记#xff1a;豆豆爸
2.6 类型转换和类型转换
正如我们所见#xff0c;不能将一种数据类型的变量赋值给另一种类型的变量。原因在于#xff0c;根据数据的实际表示#xff0c;你…Object Pascal 学习笔记Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记豆豆爸
2.6 类型转换和类型转换
正如我们所见不能将一种数据类型的变量赋值给另一种类型的变量。原因在于根据数据的实际表示你可能会得到毫无意义的结果。
现在并非每种数据类型都是如此。例如数值类型总是可以安全地升级。这里的 提升 是指你总是可以安全地将一个值赋值给一个具有更大表示量的类型。因此你可以将一个字(word)赋值给一个整数(integer)将一个整数赋值给一个 Int64 的值。与此相反的操作称为 “降级”编译器允许这种操作但可能会发出警告因为你可能只会得到部分数据。其他自动转换只有一种方式 例如可以将整数赋值给浮点数但相反的操作是非法的。
在某些情况下您想要更改值的类型并且该操作是有意义的。当您需要执行此操作时有两种选择。一种是执行直接类型转换这将复制物理数据并可能导致正确的转换或者不进行转换具体取决于类型及其值。当你执行类型转换时你是在告诉编译器“我知道我在做什幺让我去做吧”。如果你使用类型转换但不确定你在做什幺你可能会遇到麻烦因为你失去了编译器类型检查的安全网。
类型转换使用简单的函数符号目的数据类型的名称用作函数
varI: Integer;C: Char;B: Boolean;
beginI : Integer(X);C : Char(I);B : Boolean(I); 您可以在具有相同大小即表示数据的字节数相同–与上面的代码片段不同的数据类型之间安全地进行类型转换。在序数类型之间进行类型转换通常是安全的但只要你知道自己在做什么也可以在指针类型以及对象之间进行类型转换。
直接类型转换是一种危险的编程实践因为它允许你访问一个值就好像它代表了其他东西一样。由于数据类型的内部表示通常并不匹配甚至可能根据目标平台的不同而发生变化因此您有可能意外地产生难以追踪的错误。因此一般应避免类型转换。
将变量赋值给不同类型变量的另一种方法是使用类型转换函数。下面列出了一系列可以在各种基本类型之间进行转换的函数我已经在本章的演示中使用了其中一些函数 Chr将序数数转换为字符。 Ord将序数类型的值转换为指示其顺序的数字。 Round将实数类型的值转换为整数类型的值四舍五入其值还请参见下面的注释。 Trunc将实数类型的值截断为整数类型的值。 Int返回浮点值参数的整数部分。 FloatToDecimal将浮点值转换为包含其十进制表示的记录指数、数字、符号。 FloatToStr使用默认格式将浮点值转换为其字符串表示。 StrToFloat将字符串转换为浮点值。 注解 Round 函数的实现基于 CPU 提供的本机实现。现代处理器通常采用所谓的“银行家舍入”方式它根据中间值例如 5.5 或 6.5是否跟随奇数或偶数而上下舍入。还有其他舍入函数如 RoundTo可以让您更多地控制实际操作。 正如本章前面提到的其中一些转换函数也可以作为数据类型的直接操作使用归功于类型助手机制。虽然有像 IntToStr 这样的经典转换但您可以对大多数数字类型应用 ToString 操作将其转换为字符串表示。有许多转换您可以直接应用于使用类型助手的变量这应该是您首选的编码风格而不是使用类型转换。
其中一些例程适用于我们将在以下章节中讨论的数据类型。请注意该表中不包括特殊类型例如 TDateTime 或 Variant的例程也不包括专门用于格式化而非转换的例程比如强大的 Format 和 FormatFloat 例程。