c++ - 为什么将 int 转换为 bool 会发出警告?

标签 c++ visual-c++ casting boolean compiler-warnings

不应该使用 static_cast 将 int 转换为 bool,因为它会转换隐式转换的反向,但我仍然收到警告吗?

示例:

MSVC++ 8

bool bit = static_cast<bool>(100);

最佳答案

仅仅因为转换 a => b 是隐式的,并没有说明反向 b => a 的可行性。

在你的情况下,你根本不应该施放。做显而易见的事情:比较:

bool result = int_value != 0;

这是将 int 转换为 bool 的唯一逻辑正确的方法,它使代码更具可读性(因为它明确了假设)。

顺便说一句,这同样适用于相反的情况。从 bool 隐式转换为 int 只是懒惰。明确映射:

int result = condition ? 1 : 0;

关于c++ - 为什么将 int 转换为 bool 会发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968033/

相关文章:

c++ - 对大文件执行 FFT 的最快方法是什么?

c++ - 尝试在 QT 中编译项目时出现 Jom 错误

c++ - 如何修复程序中 ';' 错误之前丢失的 '*'?

c++ - Visual Studio 中的 Decltype 转换运算符

c++ - 数组类型的模板参数推导

Android Lollipop 从 native 代码c++写入sdcard

vb.net - 在 Visual Basic 中类型转换?

c# - 泛型类型的转换无效

Java:为什么在调用 .readObject() 时,具有引用泛型类型的 ArrayList 不计为强制转换?

c++ - 修复用于生成 token 的循环结构