如何使用缩小转换?

时间:2015-12-08 03:02:17

标签: c++

bool digit{ (pdigit >= bdigitplace) ? 1 : 0 };

pdigitbdigitplace都属于int类型且需要。 digit不一定是布尔值,但为了美观,我希望它是。

该行在Visual Studio中返回错误C2397:“从'int'转换为'bool'需要缩小转换”

如何在仍使用条件运算符并保​​持digit类型bool的情况下使此行有效?

2 个答案:

答案 0 :(得分:3)

使用true和false代替1和0

答案 1 :(得分:1)

它不起作用,因为使用花括号缩小转换不允许将int转换为bool。阅读本文,它可能会有所帮助:

  

缩小转化是隐式转化

     

- 从浮点类型到整数类型,或

     

- 从长双到   double或float,或double到float,除非源是a   常量表达式和转换后的实际值   可以表示的值的范围(即使它不能   完全代表,或

     

- 来自整数类型或未整形   枚举类型为浮点类型,源是除外   常量表达式和转换后的实际值将适合   进入目标类型并将产生原始值   转换回原始类型,或

     

- 来自整数类型或   unscoped枚举类型为不能代表所有的整数类型   原始类型的值,除非源是常量   表达式和转换后的实际值将适合   目标类型,并在转换回时生成原始值   原始类型。如上所述,这种转换不是   允许在列表初始化的顶层

这可以通过使用true或false而不是1和0来解决。