c++ - 在 C++ 中比较 bool 和 1

标签 c++ visual-studio-2008

<分区>

将 bool 与 1 进行比较是否正确?

在我经常发现的遗留代码中:

if (xyz.isCounterActive() == 1)

其中 sCounterActive() 返回 bool 值。

显然,if ( xyz.isCounterActive() ) 就足够了,但是如果我改变它,我不知道它可能会导致哪些副作用。软件很大,有缺陷,但客户坚持认为它可以正常工作。

编译器是VS2008

最佳答案

在这种情况下,xyz.isCounterActive() 的结果将隐式转换为 int。隐式转换的规则很多,可以引用here ,例如。

isCounterActive 的签名可能在引入后发生了变化,而更改它的人忘记修改所有 isCounterActive 调用。

关于c++ - 在 C++ 中比较 bool 和 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735416/

相关文章:

c++ - OpenGL 混合功能可消除图元重叠但保持整体不透明度

java - 使用 FFMpeg 将 BGR BufferedImage 快速转换为 YUV

c# - 有没有办法在 VS2008 之外的安装项目中执行 "Refresh Dependencies"?

visual-studio - 从 Visual Studio 2005 迁移到 2008 时需要注意什么?

c++ - 调用基类构造函数的 "Using"关键字

c++ - 直接列表初始化和复制列表初始化之间的区别

c++ - std::ofstream 不接受 << 运算符的 const char *

c# - 具有多个控件的 winform 中的事件处理

c++ - LNK2001 : unresolved external symbol _MyClass. cpp

visual-studio-2008 - 您如何在发布版本期间自动部署网站?