Unix/C/C++--强制类型转换详解

1 简介

当操作数的类型不同,而且不属于基本数据类型时,经常需要将操作数转化为所需要的类型,这个过程即为强制类型转换。强制类型转换具有两种形式:

  • 显式强制转换
  • 隐式强制类型转换。

2 C

2.1 两种转换形式

  • 显式强制转换
char c = 'a';
int i = char(c);
  • 隐式强制类型转换
char c = 'a';
int i = c;

2.2 自动转换规则

(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
(2)转换按数据长度增加的方向进行,以保证精度不降低。
(3)所有的浮点运算都是以双精度进行的。
(4)char型和short型参与运算时,必须先转换成int型。
(5)在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。
在这里插入图片描述

3 C++

3.1 三种转换形式

  • 显式强制转换
    C++的强制类型转换看起来像函数调用,更加清晰
char c = 'a';
int i = (char)c;	// C++风格
int i = char(c);	// C风格,C++兼容
  • 隐式强制类型转换(继承自C)
char c = 'a';
int i = c;
  • static_cast、dynamic_cast、const_cast、reinterpret_cast
static_cast<new_type>      (expression)
dynamic_cast<new_type>     (expression) 
const_cast<new_type>       (expression) 
reinterpret_cast<new_type> (expression)

c++强制转换注意事项

  • 新式转换优先使用。一是新式转型易辨;二是编译器愈能诊断出错误的运用。
  • 尽量少使用转型操作,尤其是dynamic_cast,耗时较高,会导致性能的下降,尽量使用其他方法替代。

4 示例

Unix/C/C+±-数据类型转换、格式化、cpy、精度

参考

1、Unix/C/C+±-数据类型转换、格式化、cpy、精度
2、《Effective C++》
3、百度百科–强制类型转换
4、图示C语言的基本数据类型内存变换
5、手把手教你c语言不同数据类型之间的转换
6、C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
7、百度百科–C语言类型强制转换
8、C++中static_cast和dynamic_cast强制类型转换
9、C++ 向上与向下类型转换(static_cast与dynamic_cast)
10、static_cast和dynamic_cast详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

worthsen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值