美文网首页
少用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