直接看代码:
情况一:如果a>b时,一切正常,但是a<b时,a-b变成了负数,但是又被强制转行成了NSUInteger类型,所以a-b实际上会变成一个超大的数,导致判断错误。
NSUInteger a = [self getAAA];
NSUInteger b = [self getBBB];
//若a = 3, b = 5, 则 a-b打印结果是一个很大的正数。
if (a-b > 50)
{
//...
}
情况一
情况二:此时if语句依然会执行,因为NSUInteger 和 int 的作对比时,int类型的-10会被强转成NSUInteger,导致-10实际上已经被强转成了一个很大的正数。
NSUInteger a = 20;
int b = -10;
if (a > b)
{
//
}
如果用lu%打印b的话,就能很直观的看到结果,如下图:
情况二总结:尽量少用 NSUInteger,特别是做比较时。
网友评论