This question already has answers here:
Can I assume (bool)true == (int)1 for any C++ compiler?
                                
                                    (4个答案)
                                
                        
                                4年前关闭。
            
                    
将布尔值与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/

10-13 06:00