C++11之防止类型收窄(列表初始化)
系列文章
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
)。
导致类型收窄的场景
- 从浮点类型隐式转换为整型数。例如
int num = 3.14;
将一个浮点型数字给到int类型变量时会进行小数截断
。 - 从高精度的浮点型转换为低精度的浮点型数据。例如
double d = 3.14159566; float f = d;
将一个double
类型的变量赋给一个float
的、将long double
类型的变量赋给一个double
类型的变量都会造成类型收窄。 - 从整型(非枚举类的枚举类型)转换为浮点型。整数值过大导致浮点型存不下来也会导致类型收窄。
- 从整型(非枚举类的枚举类型)转换为低长度的整型。这种情况类型第二条,例如
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之防止类型收窄(列表初始化)相关推荐
- C++11之防止类型收窄
文章目录 1. 类型收窄 1.1 如何看待类型收窄 2. 避免类型收窄 3. 总结 1. 类型收窄 C/C++语言自身提供了许多的基本数据类型, 通常情况下, 我们总是应该使用恰当的数据类型 ...
- C++11列表初始化
列表初始化: 1.旧语法中定义了初始化的几种不同形式,如下: int data = 0; //赋值初始化 int data = {0}; //花括号初始化 int data(0); //构造初始化 i ...
- 【 C++11 】列表初始化、声明、范围for、STL中一些变化
目录 1.C++11简介 2.统一的列表初始化 { }初始化 initializer_list容器 3.声明 auto decltype nullptr 4.范围for 5.STL中一些变化 1.C+ ...
- Q1营收超预期且亏损大幅收窄 Lyft何以驶出疫外之道?
北京时间5月7日,美国网约车巨头Lyft公布了其2020年第一季度财报.财报一经公布,Lyft股价在当日的盘后交易中大幅上涨16.39%,截至目前,涨幅收窄至14.85%,报30美元.从投资者们的反应 ...
- 祖龙娱乐2021年亏损3.03亿元 同比收窄60%
3月26日消息,祖龙娱乐发布2021年业绩报告,报告显示,祖龙娱乐2021年营收9.208亿元,同比下滑23.8%:年内亏损3.033亿元,同比收窄60%. 财报显示,截至2021年12月31日止年度 ...
- p8z77-v le plus 黑苹果_iOS13隐藏dock栏壁纸 iPhone12刘海收窄 苹果或还准备了SE Plus
// iOS13隐藏dock栏壁纸下载 之前为小伙伴们带来过 12张渐变色iOS13隐藏Dock壁纸下载 ,受到不少朋友欢迎.近日,有果粉朋友问到有没有黑白色的,答案是肯定的,以下是黑色双色iOS ...
- B站电话会议解读:今年整体亏损更明显收窄 2024年盈亏平衡
雷递网 雷建平 3月3日 哔哩哔哩(NASDAQ: BILI,HKEX:9626:简称"B站")昨日公布截至2022年12月31日的第四季度和全年财务报告.财报显示,2022财年B ...
- C++11 列表初始化(list_initialization)
一 列表初始化 定义:从花括号初始化器列表初始化对象. 语法: // 直接列表初始化 T object { arg1, arg2, ... }; (1) T { arg1, arg2, ... } ( ...
- 中国一线城市住宅地价同比增幅连续8个季度收窄
资料图:楼市.孙睿 摄 中新社北京1月17日电 (记者 庞无忌)中国国土勘测规划院17日发布的2018年第四季度中国地价数据显示,北上广深四个一线城市住宅地价同比增幅连续8个季度收窄. 数据显示,20 ...
最新文章
- Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法
- matplotlib显示中文钥匙
- 【2012百度之星/初赛上】A:度度熊就是要第一个出场
- java apt怎么用_java – APT和AOP在同一个项目中,使用Maven
- acs880 用户手册_华中数控、广州数控系统用户手册
- java兔子问题 递归_兔子问题 —— 递归的应用
- .net core 2.0学习笔记(三):度量.net framework 迁移到.net core的工作量
- 李飞飞等6名华人入选ACM 2018 Fellow,无国内学者入选
- python中关于集合的基础运用
- miui系统精简工具(免root删除内置软件)
- 关于王小云破解MD5
- 黑色家具家居茶几沙发网站源码 织梦dedecms模板 [带手机版数据同步]
- 微信小程序新版canvas绘制图片方法
- MPD软件工作坊北京站:技术创新与研发效率带来的前沿思考
- 电脑开机黑屏一串英文_电脑开机黑屏一串英文字母是为什么 开不了机
- 绿色版的PDF格式文件转换器
- 贵州计算机学业水平考试基础知识,贵州省高中信息技术学业水平考试大纲.pdf...
- 2022年“网络安全”赛项驻马店市赛选拔赛 任务书
- CentOS 6/7手动安装和魔改教程
- 自定义组件开发二 Graphics API
热门文章
- 汉诺塔(hanoi tower)游戏
- c语言中组件出现错误,错误消息:无法载入文件或组件 或其相依性的其中之一。 找到的组件资讯清单定义与组件参考不符。 (发生例外状况于 HRESULT: 0x80131040)...
- github.com/gogo/protobu: invalid pseudo-version: revision is shorter than canonical
- 【HTML | CSS | JAVASCRIPT】再见2022,一起来写一个响应式跨年倒计时吧(附源码)
- 用计算机无法解决,电脑不能打字是怎么回事【 解决方案】
- 飞信短信接口php,用PHP实现飞信api接口发飞信短信
- 免费备份工具FreeFileSync
- win7作网站服务器,win7系统做网站服务器
- 固态硬盘的S.M.A.R.T详解
- chrome html 打印预览,Chrome打印预览错误