【发布时间】:2016-10-05 11:07:30
【问题描述】:
unsigned long mynum = 7;
if(mynum > -1) // false
为什么会这样?是不是因为-1是一个int,当它被“提升”为unsigned long时,它得到了unsigned long的最大值?
【问题讨论】:
-
Signed 在此比较中变为未签名,您是对的...
-
这也意味着您的编译器警告级别不够高,因为应该标记。
-
@WhozCraig 我的编译器确实警告说,如果我执行“if (mynum>=0)”,它将永远是正确的......但否则它只会关闭...... Xcode 8,lldb ...
-
@John 尝试启用
-Wsign-compare或更简单的-Wextra。