美文网首页工作生活
NSInteger 与NSUInteger 引发的一场血案

NSInteger 与NSUInteger 引发的一场血案

作者: 生命不止运动不息 | 来源:发表于2019-07-04 10:58 被阅读0次

    今天一个很奇怪的bug,明明数据都对,但代码执行的逻辑就是不对。模拟代码如下:

        NSInteger start = -1;
        NSUInteger maxCount = 10;
        if( start < maxCount ){
            NSLog(@"1");
        }else{
            NSLog(@"2");
        }
    

    输出结果是什么?
    第一眼望去,可能都觉得这是一道送分题。然后当你仔细想想,也许会觉得出题人应该不会这么弱智。因此你决定反其道而行之,你选择输出2 ,果然,你的聪明让你猜对了。看着正确的结果,你想知道这背后到底有什么猫腻,于是你开始回头看,发现了一个小小的区别,NSUInteger 与NSInteger 中间差了个U,于是乎,你大胆预测,就是这个U惹的祸,计算机本科出身的你,猛然间豁然开朗,心想:这明明是一道基础题,太TM的基础了,基础到大家都忘记了这东西的存在了。你似乎明白了一个道理,“基础才是最重要的,简单的才是最关键的”,你决定记录下这个基础,所以你写下了这样的一句话在你的日记本上。如下:

    在OC中,无符号类型与有符号类型进行基础运算,如加减乘除,比较大小时,无符号类型会被自动转换为有符号类型。阿弥陀佛!

    相关文章

      网友评论

        本文标题:NSInteger 与NSUInteger 引发的一场血案

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