400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

C++类型转换问题系统学习-创新互联

写在前面
  • 面向初学者撰写专栏,个人原创的学习C/C++笔记(干货)
  • 所作源代码输出内容为中文,便于理解
  • 如有错误之处请各位读者指正
  • 请读者评论回复、参与投票,反馈给作者,我会获得持续更新笔记干货的动力。

致粉丝:可以在阅读完我的文章后,自己尝试写一点原创心得(哪怕一行字也好)。
 希望众(尽管400个🤣)粉丝多多支持、浏览、自我创作@_@

创新互联建站是一家专注于做网站、网站建设与策划设计,桐乡网站建设哪家好?创新互联建站做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:桐乡等地区。桐乡做网站价格咨询:028-86922220

知识点概览 

写在前面

知识点概览 

一.为什么进行类型转换

1.C++数值类型丰富

2.计算机需要处理特殊类型情况

二.类型转换的一些基本规则

1.初始化数值与赋值时进行转换

2.表达式内的类型转换

3.类型级别塔(高到低):

4.(C++11新特性)以花括号{}方式初始化进行转换 

5.传递函数参数时的类型转换

6.强制类型转换

结语

一.为什么进行类型转换 1.C++数值类型丰富2.计算机需要处理特殊类型情况二.类型转换的一些基本规则 1.初始化数值与赋值时进行转换
long l_Big = 300;
short s_small = l_Big;

如上面的例子

  1. 把long类型的变量l_Big初始化为300;
  2. 把long类型变量l_Big的值赋给较短的short类型变量s_small。
  3. 本例可能运行时不会出大问题。但是当l_Big数值大到超过short类型取值范围时,会出现未知的错误(例如,数值的上溢和下溢)
  4. 把一个小类型数值赋给较大类型数值一般不会出问题,只会在内存里占用更多的字节。
  5. 下表列出了一些类型转换可能出现的问题:
类型转换示例可能出现的问题
较大整型-->较小整型long转short原较大值超过小类型取值范围
浮点类型-->整型double转int原小数部分被丢弃,也可能超过后者的取值范围
较大浮点型-->较小浮点型double转float精度降低(有效数位减少),或超出后者取值范围

注意:浮点类型转换为整型时,直接丢弃小数部分,而不是四舍五入保留整数部分 

注意:bool类型变量,只有数值0赋给bool类型会转换为false(假),其他任意类型非零数值都会转换成true(真)。

2.表达式内的类型转换

1.整型提升:

2.两种或多种类型混合时,多采取“小类型转换为大类型”。

3.校验表(C++11标准):

  • 如一个操作数类型是long double,则将另一个操作数转换为long double
  • 否则,如一个操作数类型是double,则将另一个操作数转换为double
  • 否则,如一个操作数类型是double,则将另一个操作数转换为double
  • 否则,两个操作数都不是浮点数,都将会执行整型提升
  • 此情况下若两个操作数都是有或无符号的类型,低级别操作数转高级别类型
  • 操作数中一个有符号类型,另一个无符号类型且级别较高,则有符号类型转为该无符号类型
  • 否则,若有符号类型可以表示无符号类型所有取值,则将无符号操作数转为有符号所属类型
  • 否则,将两个操作数都转为有符号类型的无符号版本
3.类型级别塔(高到低):
有符号整型类其他类型
(注:无符号整型类同有符号整型类)(空)
long long(空)
long(空)
int(空)
short(空)
signed charchar,signed char,unsigned char同级
(空)wchar_t,char16_t,char_32_t与其底层类型相同
(空)bool最低
4.(C++11新特性)以花括号{}方式初始化进行转换 

1.也称作列表初始化,常用于给复杂数据类型提供值列表,要求更严格,不允许缩窄,可能不能用小类型表示大类型数值,且不允许将浮点型转换为整型。

2.只要类型长度足够,就可以进行初始化类型转换

5.传递函数参数时的类型转换6.强制类型转换
(括号里放类型名)变量名或数值//方法一
变量名或数值(括号里放类型名)//方法二
static——cast<类型名>(变量或数值)

结语

 今天我们共同学习了:C++类型转换的原因与基本规则,涉及初始化数值/表达式内的/列表初始化的/传递参数时的/强制类型转换,以及数值级别塔 等重要知识。
 学编程是一条漫长的路,贵在坚持。每天学习来提升自己的的编程能力,成为耀眼的IT之星。
 各位读者跟随我的脚步,我们共同努力,共同进步吧!

返回作者主页

专栏下一篇文档:学习C++基本数值类型 

其它文章:C++学习/温习笔记:源码学编程(一)(优秀博文)

 C语言求幂运算(尽大支持)——中文式奇特命名

 简洁易懂地介绍C++参数

 C/C++基础运算符


如有探讨问题联系邮箱:yhlz0613@163.com

对于文章中的错误请各位批评指正,我一定及时更正

请在投票后评论回复意见,如有关于写博文的指导也请您回复提出

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:C++类型转换问题系统学习-创新互联
网站路径:http://mbwzsj.com/article/dhjgdg.html

其他资讯

让你的专属顾问为你服务