数组列表初始化问题——C++学习小计

本篇内容为学习小计,内容来自《C++ primer plus》第六版。

C++11中的列表初始化新增功能:

1.数组初始化时,可省略等号(=):

double earnings[4]{ 1.2e4,1.6e4,1.1e4,1.7e4 };  //okay with C++11
cout << earnings[1] << endl;

运行结果:

2.可不在大括号内包含任何东西,这将把所有元素都设置为零:

unsigned int counts[10] = {};
float balance[100]{};
cout << counts[5] << endl;
cout << balance[35] << endl;

运行结果:

3.列表初始化禁止缩窄转换:

long plifs[] = { 25,38,3.0 };
char slifs[4]{ 'h','i',1122011,'\0' };
char tlifs[4]{ 'h','i',112,'\0' };
cout << plifs[0] << endl;
cout << slifs[1] << endl;
cout << tlifs[2] << endl;

课本上的原话:“在上述代码中,第一条语句不能通过编译,因为将浮点数转换为整型是缩窄操作,即使浮点数的小数点后面为零。第二条语句也不能通过编译,因为1122011超出了char变量的取值范围(这里假设char变量的长度为8位)。第三条语句可通过编译,因为虽然112是一个int值,但它在char变量的取值范围内。”

但是实际运行的结果是:

程序有警告:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值