首页 > 编程知识 正文

c语言数据类型(C 数据类型转换)

时间:2023-05-03 09:37:51 阅读:123474 作者:1677

c数据类型转换概述不同类型数据之间的转换隐式类型转换强制类型转换自己声明的类型转换构造函数类型转换函数的情况应用

概要

在日常开发中,经常使用数据类型转换,因此必须对数据类型转换有一定的了解。

在c中,不同类型数据之间的转换可以自动在某些标准类型的数据之间进行。

隐式转换隐式转换:由c编译系统自动完成,无需干预。 例如:

int main () inta=6; a=a 3.5; cout a endl; 返回0; 输出结果:

9强制转换强制转换:将一种类型的数据转换为程序中明确指定的另一种类型。 例如:

int main () inta=int ) ) 2.3; 双精度=双精度(12; cout a endl; cout b endl; 返回0; 输出结果:

212自声明类型转换使用自声明类型进行数据转换时,会出现不知道:编译系统如何转换的问题。

解决方案:

定义特殊函数,用于告知编译系统如何执行转换构造函数和类型转换函数

变换构造函数变换构造函数可将其它类型的数据变换为类对象的构造函数。

例如:

# ifndef project8_ complex _ h # define project8_ complex _ h # includeiostreamusingnamespacestd; class complex { private 3360双精度实时; 双图像; 公共: complex (); //无参结构complex(doubler,double i ) :real(r ),imaginary(I ) }; //complex(complexc )//复制构造函数cout 'copy constructor' endl; (; complex (双精度) :real(r ) }; //转换构造函数; (; #endif //PROJECT8_COMPLEX_H类型转换函数转换构造函数用于将标准数据转换为类中的对象。 类型转换函数type conversion function允许将类中的对象反过来转换为标准型数据。

事例Complex类:

# ifndef project8_ complex _ h # define project8_ complex _ h # includeiostreamusingnamespacestd; class complex { public :双精度实时; 双图像; 公共: complex (); //无参结构complex(doubler,double i ) :real(r ),imaginary(I ) }; //complex (双精度) : real(r ) r ); //构造函数操作器双精度() {return real; (; //类型转换函数complexoperator(complexc ) return complex (realc.real,imaginary c.imaginary ); (; (; # endif///project8_ complex _ hmain :

# include iostream # include ' complex.h ' usingnamespacestd; int main () complexC1 ) 3.1,4 ),C2 ) 5.2,-10 ); 双精度D1、d2; d1=c1 2; //3.1 2,调用类型松弛函数cout d1 endl; d2=c1 c2; //3.1 ) 5.2,调用类型松弛函数cout d2 endl; 返回0; 输出结果:

5.18.3编译系统根据表达式的上下文自动调用类型转换函数,并将Complex类对象用作双精度类型数据。

应用类型转换函数也称为:类型转换运算符函数,该函数强制类型转换运算符重载函数,而类型转换运算符强制函数重载。

按类型进行各种混合运算的方案:

重载构造函数的类型变换函数运算符进行各种运算时,不重载多个运算符,而是使用类型变换函数。工作量少,程序精练,不出现二义性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。