C++Primer学习笔记(第五版)——类型转换(第四章)

类型转换分为隐式转换和显示转换。

几种隐式转换

算术转换:运算对象将转换成最宽的类型(避免损失精度)

整型提升:小整型(char(u)、short(u)、bool)会提升为int或unsigned int

较大的char类型会转换成int(u)、long(u)、long long(u)中最小的(能容纳char) 

有符号与无符号数的转换:

无符号类型不小于有符号类型时,有符号类型转换成无符号类型。

无符号类型小于有符号类型时,转换结果依赖于机器。(?)

如果无符号类型的所有值都能存在该带符号类型中,则无符号类型的运算对象转换成带符号类型;
如果无符号类型的所有值不能存在该带符号类型中,则带符号类型的运算对象转换成无符号类型。

数组转换成指针:

数组名字通常自动转换成指向首元素的指针

decltype、取地址符、sizeof、typeid和用一个引用来初始化数组时,上述转换不会发生

指针的转换:

常量整数值0和字面值nullptr能转换成任意指针类型。

指向任意非常量的指针能转换成void*

指向任意对象的指针能转换成const void*

转换成布尔类型:非0为true,0为false(算术类型或指针类型)

转换成常量:

允许将指向非常量类型的指针(引用)转换成相应的常量类型的指针(引用)

类类型定义的转换:编译器每次只能执行一种类类型的转换。

几种显示转换:cast-name<type>(expression),如果type是引用,则结果是左值。(这里还没有弄明白……)

static_cast

const_cast

reinterpret_cast


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值