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

  • 相关阅读:
    systemd管理服务
    卷积神经网络
    matplotlib-3.2.1
    pandas-1.0.3
    numpy-1.18.4
    降维
    无监督学习-聚类
    集成学习
    人工神经网络
    贝叶斯分类
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2304378.html
Copyright © 2020-2023  润新知