强制类型转换(Casting)

强制类型转换(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

你可能感兴趣的:(类型转换)