出现了以下需求:将 bool 转换为 int 并乘以系数。例如,
bool valBool = true;
int exampleNumber = valBool * coef;
...
问题是(即在编译器中的所有 C++ 标准/实现中) bool 是否总是会被强制转换为 int,如果是,它是否总是等于 1(如果 True)和 0(如果 False))?如果不是,问题可能出在哪里?
出现了以下需求:将 bool 转换为 int 并乘以系数。例如,
bool valBool = true;
int exampleNumber = valBool * coef;
...
问题是(即在编译器中的所有 C++ 标准/实现中) bool 是否总是会被强制转换为 int,如果是,它是否总是等于 1(如果 True)和 0(如果 False))?如果不是,问题可能出在哪里?
更准确地说,首先进行左值到右值的转换,然后将生成的纯右值转换为 类型的值
int
:为了清楚起见,下面是此类表达式的AST示例:
(箭头标记您感兴趣的转换)。
(看这里)