This question already has answers here:
Can I assume (bool)true == (int)1 for any C++ compiler?
(4个答案)
4年前关闭。
将布尔值与1进行比较是否正确?
在旧版代码中,我经常发现:
sCounterActive()返回bool。
显然,
编译器是VS2008
(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