0

我有一个比问题更大的奇怪问题。

iGhostLen 为 -1,iMaxGhost 为 480。但 iGhostLen=iMaxGhost; 被击中。

-1 是一个特例还是我哪里出错了。我不认为 -1 大于 480。

谢谢你。

unsigned int iMaxGhost=(120 * 4);
int iGhostLen=-1

if (iGhostLen > iMaxGhost)
{
    iGhostLen=iMaxGhost;
}
4

2 回答 2

1

由于比较有符号和无符号整数,您应该收到编译器警告。更改unsigned intint,并阅读一些有关数字表示的信息。

于 2013-10-13T19:46:15.537 回答
0

发生这种情况是因为iMaxGhost未签名,但iGhostLen已签名。有符号值将被转换为无符号值进行转换(因此-1 将成为一个非常大的值)。

您可以通过更改iMaxGhost为有符号整数或使用负值的特殊情况来解决此问题。

于 2013-10-13T19:47:02.647 回答