现在的位置: 首页 > 综合 > 正文

强制类型转换(Casting)

2012年10月21日 ⁄ 综合 ⁄ 共 945字 ⁄ 字号 评论关闭

强制类型转换(Cast)是指编译器把另一种不同类型的数据当成某一种数据类型处理。也叫类型强制转换(type cast)。

编译器在调用一个函数时对形参和实参的类型匹配的检查是严格的。因此为了能通过编译检查,经常需要把一个变量的类型转换为另一个变量的类型。

如下面的例子中,将Char转化为Integer和Byte类型:

program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  Achar: Char;
  Abyte: Byte;
  Ainteger: Integer;
begin
  Achar := 'A';
  //Abyte := Achar;  {直接将Char类型赋值给Byte类型,会报错"Incompatible types"}
  Abyte := Byte(Achar);
  Ainteger := Integer(Achar);
  Writeln('Abyte = ', Abyte);       { 转换成功,显示 65}
  Writeln('Ainteger = ', Ainteger); { 转换成功,显示 65}
  Readln;
end.

运行后结果为:

0052

只有当两个变量的数据长度一样时,才能对变量进行强制类型转换。

不能把一个Double类型强制转换为Integer类型,为了把一个浮点数类型转换为一个整型,要用到Trunc()和Round()函数;要把一个整型转换为一个浮点数类型,直接赋值就可以。

如:

program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  Adouble: Double;
  Ainteger: Integer;
begin
  Adouble := 3.14;
  //Ainteger := Integer(Adouble); { 转换失败,提示“Invalid typecast”}
  Ainteger := Round(Adouble);
  Writeln('Ainteger = ', Ainteger);

  Ainteger := 34;
  Adouble := Ainteger;
  Writeln('Adouble = ', Adouble); { 对于把整型转化为一个浮点类型,直接赋值就可以}
  Readln;
end.

运行后结果为:

0053

以上代码均在Delphi7中测试通过,示例代码下载20111228类型转换(Typecast).rar

抱歉!评论已关闭.