警告:Wlogical-not-parentheses

时间:2015-05-31 10:23:47

标签: c++ g++ warnings

我遇到了几天的问题。

编译程序时收到此警告。

In member function 'void CClientManager::RESULT_SAFEBOX_LOAD(CPeer*, SQLMsg*)':
661:25: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
        if (!dwSkillVnum > 120)
                         ^

另一个警告:

661:25: warning: comparison of constant '120' with boolean expression is always false [-Wbool-compare]

我想提一下,在我使用g ++ 5.1.0之后发生了这两个警告 在我使用g ++ 4.2之前,我有这个警告。  那么我该如何解决这个问题。

这是我的档案:http://pastebin.com/fWYYmXsH

2 个答案:

答案 0 :(得分:2)

if (!dwSkillVnum > 120)

相同
if ((!dwSkillVnum) > 120)

永远不会被执行,因为提升的bool (!dwSkillVnum)将为零或一,因此不大于120。你很可能意味着

if (!(dwSkillVnum > 120))

if (dwSkillVnum <= 120)

代替。

答案 1 :(得分:2)

operator!()的优先级高于operator>(),因此您有效地将!dwSkillVnum转换为bool并将其与整数值进行比较。

如警告中所述,正确修复此括号:

 if (!(dwSkillVnum > 120))
   // ^                 ^