将函数的整数返回值与C++中的bool进行比较

nit*_*ian 2 c++ boolean function return-value

请考虑以下C++代码段:

...

if (false == func()) // Line #1
{
 ...
 ...
}

int func()
{
 ...
  {
     ...
     return false;
  }
 ...

 return true;
} 
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,函数原型func()表明它返回一个整数.但是在函数内部func(),它返回false或者true.

同样在第1行中,函数的返回值func()是根据布尔值检查的.

我想知道这种用法是否有任何问题.如果有问题,建议需要进行哪些整改.

jua*_*nza 8

没有问题,任何非零整数转换为true,而零false.相反,一个bool可以被转换成int,用true转换为1和false到0.

比较布尔值时,您不需要如此冗长:

if (!func()) { .... }
Run Code Online (Sandbox Code Playgroud)

当然,如果函数只返回true或者false像在你的例子中一样,那么bool直接返回它是有意义的:

bool func();
Run Code Online (Sandbox Code Playgroud)