use*_*344 14 c++ casting boolean compiler-warnings visual-c++
是不是可以使用static_cast将int转换为bool,因为它转换隐式转换的反向但我仍然收到警告?
例:
MSVC++ 8
bool bit = static_cast<bool>(100);
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 48
仅仅因为转换a => b是隐含的,没有说明反向的可行性,b => a.
在你的情况下,你根本不应该施放.做一件显而易见的事:比较:
bool result = int_value != 0;
Run Code Online (Sandbox Code Playgroud)
这是一个转换的唯一逻辑正确的方式int来bool和它使代码更可读(因为它使得假设明确).
顺便提一下,这同样适用于相反的情况.从隐式转换bool到int仅仅是懒惰.使映射显式:
int result = condition ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
这是你和你的编译器之间,但微软认为你应该写:
i != 0
Run Code Online (Sandbox Code Playgroud)
优先于:
(bool)i
Run Code Online (Sandbox Code Playgroud)
要么
static_cast<bool>(i)
Run Code Online (Sandbox Code Playgroud)
更喜欢它的可能原因包括:
if (buf != NULL)或不喜欢,if (buf != 0)if (buf)malloc