C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 为什么`bool b = 2`运行良好但是`bool b = {2}`会产生转换范围缩小的警告?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用C 11中的{}初始化程序初始化bool b = {2}会产生以下警告消息:
warning: narrowing conversion of ‘2’ from ‘int’ to ‘bool’ inside { } [-Wnarrowing]

但是,使用旧式bool b = 2没有这样的问题.这背后的原因是什么?

更新:我使用g -std = c 11编译了代码,它给了我警告.如果我添加选项-pedantic-errors,则警告将成为错误.

解决方法

缩小初始化列表中的数据类型会使您的c 11程序生成错误,在这种情况下,编译器可以发出警告或继续运行.

有趣的是,你实际上可以将它改为bool b = {1}并且没有警告,我假设因为bool的值保证在整数类型中转换为0和1.

这是确认错误的标准报价.

大佬总结

以上是大佬教程为你收集整理的c – 为什么`bool b = 2`运行良好但是`bool b = {2}`会产生转换范围缩小的警告?全部内容,希望文章能够帮你解决c – 为什么`bool b = 2`运行良好但是`bool b = {2}`会产生转换范围缩小的警告?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。