美文网首页
少用NSUInteger,特别是做比较时

少用NSUInteger,特别是做比较时

作者: 开发者老岳 | 来源:发表于2017-08-29 10:38 被阅读50次

直接看代码:
情况一:如果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,特别是做比较时。

相关文章

网友评论

      本文标题:少用NSUInteger,特别是做比较时

      本文链接:https://www.haomeiwen.com/subject/hlmgdxtx.html