bool digit{ (pdigit >= bdigitplace) ? 1 : 0 };
pdigit
和bdigitplace
都属于int
类型且需要。 digit
不一定是布尔值,但为了美观,我希望它是。
该行在Visual Studio中返回错误C2397:“从'int'转换为'bool'需要缩小转换”
如何在仍使用条件运算符并保持digit
类型bool
的情况下使此行有效?
答案 0 :(得分:3)
使用true和false代替1和0
答案 1 :(得分:1)
它不起作用,因为使用花括号缩小转换不允许将int转换为bool。阅读本文,它可能会有所帮助:
缩小转化是隐式转化
- 从浮点类型到整数类型,或
- 从长双到 double或float,或double到float,除非源是a 常量表达式和转换后的实际值 可以表示的值的范围(即使它不能 完全代表,或
- 来自整数类型或未整形 枚举类型为浮点类型,源是除外 常量表达式和转换后的实际值将适合 进入目标类型并将产生原始值 转换回原始类型,或
- 来自整数类型或 unscoped枚举类型为不能代表所有的整数类型 原始类型的值,除非源是常量 表达式和转换后的实际值将适合 目标类型,并在转换回时生成原始值 原始类型。如上所述,这种转换不是 允许在列表初始化的顶层
这可以通过使用true或false而不是1和0来解决。