【C++】类型转换

在C++中,类型转换(Type Conversion)是将一种数据类型转换为另一种数据类型的过程。类型转换可以分为两大类:隐式转换(implicit conversion)和显式转换(explicit conversion)。

1. 隐式转换

隐式转换是由编译器自动完成的,不需要显式的类型转换操作符。这种比较简单。常见的隐式转换有以下几种:

1.1 整形提升

charshort 等较小的整数类型可以自动提升为 int

char c = 'A';
int i = c;  // char 自动提升为 int

1.2 算术转换

不同类型的数据在混合运算时会进行转换,以确保运算的正确性。例如,intdouble 进行运算时,int 会被转换为 double

int i = 10;
double d = 3.14;
double result = i + d;  // int 被转换为 double

2. 显示转换

以上都属于C风格的转换格式,简单但是有一些问题,

  • 隐式类型转化有些情况下可能会出问题:比如数据精度丢失。
  • 显式类型转换将所有情况混合在一起,代码不够清晰。

因此C++提出了自己的类型转化风格,注意因为C++要兼容C语言,所以C++中还可以使用C语言的转化风格。

标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:

  • static_cast
  • reinterpret_cast
  • const_cast
  • dynamic_cast

2.1 static_cast

static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用 static_cast,但它不能用于两个不相关的类型进行转换。

int main()
{
   
   
	double d = 12.34;
	int a = static_cast<int>(d);//将d转换为ind
	std::cout << a << std::endl;//输出12
	return 0;
}

两个不相关的类进行转换,会出错。如下:

int main()
{
   
   
	double d = 12.34;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++下等马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值