系列文章

C++11之正则表达式(regex_match、regex_search、regex_replace)

C++11之线程库(Thread、Mutex、atomic、lock_guard、同步)

C++11之智能指针(unique_ptr、shared_ptr、weak_ptr、auto_ptr)浅谈内存管理

C++11之强制类型转换(static_cast,const_cast,dynamic_cast,reinterpret_cast)

C++11之Lanbda表达式(匿名函数)

C++11之右值引用:移动语义和完美转发(带你了解移动构造函数、纯右值、将亡值、右值引用、std::move、forward等新概念)

C++11之继承构造函数(using 声明)

C++11之委派构造函数

C++11之显式转换操作符-explicit

C++11之初始化列表


文章目录

  • 系列文章
  • 类型收窄
    • 导致类型收窄的场景
    • 代码演示
    • 总结

类型收窄

类型收窄:是指数据发生变化、精度丢失这种隐式类型转换的情况。
列表初始化的一个重要功能就是可以防止类型收窄narrowing)。

导致类型收窄的场景

  1. 从浮点类型隐式转换为整型数。例如 int num = 3.14; 将一个浮点型数字给到int类型变量时会进行小数截断
  2. 从高精度的浮点型转换为低精度的浮点型数据。例如 double d = 3.14159566; float f = d; 将一个double类型的变量赋给一个float的、将long double类型的变量赋给一个double类型的变量都会造成类型收窄。
  3. 从整型(非枚举类的枚举类型)转换为浮点型。整数值过大导致浮点型存不下来也会导致类型收窄。
  4. 从整型(非枚举类的枚举类型)转换为低长度的整型。这种情况类型第二条,例如long long 转换为 int

代码演示

在下面这段代码中,通过赋值表达式或者小括号的表达式进行初始化时,就算是类型收窄也不会报错只会有警告⚠。但是如果采用初始化列表的方式出现类型收窄时就会导致编译出错。

#include <iostream>using namespace std;/** 数据变化、精度丢失 都是类型收窄*/int main()
{const int x = 1024;const int y = 10;char a = x;  // 类型收窄 char* b = new char(1024);  // 类型收窄 char c = { x }; // 类型收窄   报错char d = { y };unsigned char e = { -1 };  // 类型收窄   报错float f{ 7 };int g{ 2.0f }; // 类型收窄   报错float* h = new float{ 1e48 };   // 类型收窄   报错float i = 1.21;return 0;
}

总结

在C++11中引入了列表初始化,列表初始化可以有效的防止类型收窄。一般来说数据的改变将大概率会导致程序出错,这有效的阻止了一些隐患,这也是列表初始化有别于其他初始化方式。

C++11之防止类型收窄(列表初始化)相关推荐

  1. C++11之防止类型收窄

    文章目录 1. 类型收窄 1.1 如何看待类型收窄 2. 避免类型收窄 3. 总结 1. 类型收窄      C/C++语言自身提供了许多的基本数据类型, 通常情况下, 我们总是应该使用恰当的数据类型 ...

  2. C++11列表初始化

    列表初始化: 1.旧语法中定义了初始化的几种不同形式,如下: int data = 0; //赋值初始化 int data = {0}; //花括号初始化 int data(0); //构造初始化 i ...

  3. 【 C++11 】列表初始化、声明、范围for、STL中一些变化

    目录 1.C++11简介 2.统一的列表初始化 { }初始化 initializer_list容器 3.声明 auto decltype nullptr 4.范围for 5.STL中一些变化 1.C+ ...

  4. Q1营收超预期且亏损大幅收窄 Lyft何以驶出疫外之道?

    北京时间5月7日,美国网约车巨头Lyft公布了其2020年第一季度财报.财报一经公布,Lyft股价在当日的盘后交易中大幅上涨16.39%,截至目前,涨幅收窄至14.85%,报30美元.从投资者们的反应 ...

  5. 祖龙娱乐2021年亏损3.03亿元 同比收窄60%

    3月26日消息,祖龙娱乐发布2021年业绩报告,报告显示,祖龙娱乐2021年营收9.208亿元,同比下滑23.8%:年内亏损3.033亿元,同比收窄60%. 财报显示,截至2021年12月31日止年度 ...

  6. p8z77-v le plus 黑苹果_iOS13隐藏dock栏壁纸 iPhone12刘海收窄 苹果或还准备了SE Plus

    //  iOS13隐藏dock栏壁纸下载  之前为小伙伴们带来过 12张渐变色iOS13隐藏Dock壁纸下载 ,受到不少朋友欢迎.近日,有果粉朋友问到有没有黑白色的,答案是肯定的,以下是黑色双色iOS ...

  7. B站电话会议解读:今年整体亏损更明显收窄 2024年盈亏平衡

    雷递网 雷建平 3月3日 哔哩哔哩(NASDAQ: BILI,HKEX:9626:简称"B站")昨日公布截至2022年12月31日的第四季度和全年财务报告.财报显示,2022财年B ...

  8. C++11 列表初始化(list_initialization)

    一 列表初始化 定义:从花括号初始化器列表初始化对象. 语法: // 直接列表初始化 T object { arg1, arg2, ... }; (1) T { arg1, arg2, ... } ( ...

  9. 中国一线城市住宅地价同比增幅连续8个季度收窄

    资料图:楼市.孙睿 摄 中新社北京1月17日电 (记者 庞无忌)中国国土勘测规划院17日发布的2018年第四季度中国地价数据显示,北上广深四个一线城市住宅地价同比增幅连续8个季度收窄. 数据显示,20 ...

最新文章

  1. Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法
  2. matplotlib显示中文钥匙
  3. 【2012百度之星/初赛上】A:度度熊就是要第一个出场
  4. java apt怎么用_java – APT和AOP在同一个项目中,使用Maven
  5. acs880 用户手册_华中数控、广州数控系统用户手册
  6. java兔子问题 递归_兔子问题 —— 递归的应用
  7. .net core 2.0学习笔记(三):度量.net framework 迁移到.net core的工作量
  8. 李飞飞等6名华人入选ACM 2018 Fellow,无国内学者入选
  9. python中关于集合的基础运用
  10. miui系统精简工具(免root删除内置软件)
  11. 关于王小云破解MD5
  12. 黑色家具家居茶几沙发网站源码 织梦dedecms模板 [带手机版数据同步]
  13. 微信小程序新版canvas绘制图片方法
  14. MPD软件工作坊北京站:技术创新与研发效率带来的前沿思考
  15. 电脑开机黑屏一串英文_电脑开机黑屏一串英文字母是为什么 开不了机
  16. 绿色版的PDF格式文件转换器
  17. 贵州计算机学业水平考试基础知识,贵州省高中信息技术学业水平考试大纲.pdf...
  18. 2022年“网络安全”赛项驻马店市赛选拔赛 任务书
  19. CentOS 6/7手动安装和魔改教程
  20. 自定义组件开发二 Graphics API

热门文章

  1. 汉诺塔(hanoi tower)游戏
  2. c语言中组件出现错误,错误消息:无法载入文件或组件 或其相依性的其中之一。 找到的组件资讯清单定义与组件参考不符。 (发生例外状况于 HRESULT: 0x80131040)...
  3. github.com/gogo/protobu: invalid pseudo-version: revision is shorter than canonical
  4. 【HTML | CSS | JAVASCRIPT】再见2022,一起来写一个响应式跨年倒计时吧(附源码)
  5. 用计算机无法解决,电脑不能打字是怎么回事【 解决方案】
  6. 飞信短信接口php,用PHP实现飞信api接口发飞信短信
  7. 免费备份工具FreeFileSync
  8. win7作网站服务器,win7系统做网站服务器
  9. 固态硬盘的S.M.A.R.T详解
  10. chrome html 打印预览,Chrome打印预览错误