Delphi强制类型转化和类型约定

  强制类型转换时一种技术,通过它能够使编译器把一种类型的变量当做另一种类型。

  由于Pascal有定义新类型的功能,因此编译器在调用一个函数时候对形参和实参类型匹配的检查是非常严格的。因此为了能够通过编译器检查,经常需要把一个变量的类型转换为另一个变量的类型。例如:假定要把一个字符类型的值赋给一个byte类型的变量:

var
    c: char;
    b: byte;
begin
    c:= ‘a‘;
    b:= c;    //编译器要提示错误
end.

  在下面的代码中,强制类型转换把c转换成byte类型,事实上强制类型转换是告诉编译器你知道你正在做什么,并要把一种类型转换为另一种类型

var
    c: char;
    b: byte;
begin
    c:= ‘s‘;
    b:= byte(c);    //编译器不会报错
end.

  注意:只有当两个类型的数据长度一样的时候,才能对变量进行强制类型转换。例如,不能把一个Double强制转换为Integer。

  为了能把一个浮点型转换为一个整型,要用Trunc()或者Round()函数。

  为了把整型转换成一个浮点数类型的值,用下面的赋值语句:

FloatVar:= intVar;
//直接将Integer型变量赋值给Double型变量

  

时间: 2024-08-22 21:35:49

Delphi强制类型转化和类型约定的相关文章

c++中一些强制类型转化

C语言中经常可以见到一些强制类型转化,主要是在变量名前加(类型).而在c++中与c语言也有一些差异,C++中主要有四种强制类型转化. static_cast它的主要转化是对于相关类型之间的转化 int main() { float a = 1.2; int b = static_cast<int>(a); cout << b << endl; getchar(); return 0; } 2.reinterpret_cast它的主要转化是对于不相关类型之间的转化 int

强制类型转化(数组名以及数组名取地址)

代码: void main() { int a[4] = {1,2,3,4}; int *ptr0 = &a[0] + 1; int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int)a + 1); int *ptr3 = (int *)(a + 1); cout<<*ptr0<<" "<<ptr1[-1]<<" "<<*ptr2<&l

Asp.net 面向接口可扩展框架之类型转化基础服务

新框架正在逐步完善,可喜可贺的是基础服务部分初具备模样了,给大家分享一下 由于基础服务涉及太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 说到类型转化必须要清楚.net的类型,类型都不清楚何来类型转化 1.Primitive类型 1.1 这个概念估计很多人都没听说过,Primitive不是一个新类型,而是.net类型中最基本的一种分类,是基元类型的意思       MS将类型分为三类:Primitive(基元类型).Complex(复

javascript中的隐式类型转化

javascript中的隐式类型转化 #隐式转换 ## "+" 字符串和数字 如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+将进行拼接操作. 如果其中一个操作数是对象(包括数组),则首先对其调用`ToPrimitive`抽象操作,该抽象操作再调用`[[DefaultValue]]`,以数字作为上下文. `[1,2]+[3,4]=='1,23,4'` 原因,因为数组的valueOf操作无法得到简单的基本类型,于是它转而调用toString.因此上栗得到的是'1,23,4'

C++中的显式类型转化

类型转化也许大家并不陌生,int i; float j; j = (float)i; i = (int)j; 像这样的显式转化其实很常见,强制类型转换可能会丢失部分数据,所以如果不加(int)做强制转换,严检查的编译会报错,宽检查的编译会报warning.在C语言中,指针是4字节或者8字节的,所以指针之间的强制转换在转换的时候就如同不同的整数类型之间的赋值,问题在于对该指针的使用上,必须确保该指针确实可以做出这样的强制转换.常见的情况是void*到不同的指针类型(比如内存分配,参数传递),cha

第四十一课、类型转化构造函数(上)

一.C语言中的类型转换 1.标准数据类型之间会进行隐式的类型安全转换2.转换规则如下 3.由此可知,如果是小类型转到大类型,C语言是支持隐式转换,是安全的 #include<iostream> using namespace std; int main() { short s = 'a';//小类型转化为大类型,安全 unsigned int ui = 1000;//1000默认为int,小类型转化为大类型 int i = -2000; double d = i; cout <<

1.7—Java基本类型转化及常见错误和问题

数据类型的转换  自动类型转换 自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型.在图1所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会精度的损失. 图1 自动类型转换 可以将整型常量直接赋值给byte. short. char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围 [示例1]自动类型转换特例 short  b = 12;        //合法 short  b = 1234567;    //非法 强制类型转换 强制类型转换(Cast

Swift(二,元组,可选类型,类型转化)

一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧 //1.使用元组来定义一组数据 let infoTuple = ("cjh",18,1.8) let nameTuple = infoTuple.0 print(nameTuple) let count = nameTuple.characters.count //2.1 普通元组的定义方式 let errorMsg = ("error",123) errorMsg.0 //2.

Java中byte、short、char、int、long运算时自动类型转化问题

-------------------------------------------------------------------------------------------------- ★★自动(隐式.默认)类型转换与强制(显式)类型转换★★ 1) boolean类型不参与转换 2) 默认转换 A:从小到大 B:byte,short,char --? int --? long --? float --? double C:byte,short,char之间不相互转换,直接转成int类