我遇到了几天的问题。
编译程序时收到此警告。
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
答案 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))
// ^ ^