我有一个比问题更大的奇怪。
iGhostLen为-1,iMaxGhost为480。 但仍然是行iGhostLen = iMaxGhost;被击中了。
-1是特殊情况还是我可能出错的地方。 我不认为-1大于480。
谢谢。
unsigned int iMaxGhost=(120 * 4);
int iGhostLen=-1
if (iGhostLen > iMaxGhost)
{
iGhostLen=iMaxGhost;
}
答案 0 :(得分:1)
由于比较有符号和无符号整数,您应该收到编译器警告。将unsigned int
更改为int
,并阅读一些有关数字表示的内容。
答案 1 :(得分:0)
这是因为iMaxGhost
未签名,但iGhostLen
已签名。带符号的值将转换为转换的无符号值(因此-1将成为一个非常大的值)。
您可以通过将iMaxGhost
更改为有符号整数,或者为负值设置特殊情况来解决此问题。