c++类型转换

c++类型转换

隐式类型转换 :概念:编译器完成的转换,不需要程序员手动转换。

1 混合类型的算术表达式中,最宽的数据类型为目标转换类型
2 将一种数据类型赋值给另外一种数据类型,被赋值对象的类型是目标转换类型
3 把一个表达式传递给一个函数调用,表达式的类型与参数不同,形参的类型是目标转换类型
4 从一个函数返回一个表达式,表达式与返回类型不同,函数返回类型是目标转换类型
5 二元操作符算术转换
  浮点数:
  有long double 目标类型就是long double 
  double        
  float
  整数:(整值提升,integral promotion)
   第一步 char,signed  char,unsigned char ,short int 都被提升为int
   第二部 有unsigned long 则为unsigned long
          如果都不是unsigned long,有long则目标类型为long
          如果2个都不是long ,有unsigned int,则目标类型为unsigned int
  
  unsigned long > long > unsigned int > int >剩下的所有整形类型
6 void*可以赋值除常量数据的指针以外的指针类型
  const void* 可以接收上常量数据的指针
  void*不能直接赋值给非void指针以外的指针变量
  因为编译器没法帮你检查长度,在后续操作的时候偏移位置异常。

显示类型转换
7.dynamic_cast转换
  如果是指针类型转换失败返回0  dynamic_cast<int*>
  如果是引用类型转换异常抛出std::bad_cast异常 dynamic_cast<int &>
8 reinterpret_cast
  只是简单的变量赋值,没有任何检查,可以在任何指针之间
9 const_cast  去除指针的常量
10 static_cast 同c里面的转换
参考自cplusplus.com及c++ primer


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值