美文网首页工作生活
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