NSUInteger设为负数

大家都知道NSUInteger是表示 无符号整形数值 即自然数

但实际操作的时候,发现NSUInteger其实是可以设置成负值的,并且不报⚠️

所以本来要规避的一些错误就无法规避,还是得自己处理

 

 

 

 

 

 

 

至于不会执行的原因就变成了-----有符号和无符号数的比较
而编译器在判断有符号数和无符号数进行比较时,一律会将有符号数转化为无符号数

即将NSInteger类型的值-25转换为NSUInteger类型,也就是我们看到的值

至于为什么是这个值:参考https://www.jianshu.com/p/684dbd35dc75

 

 

综上:

1、我们要做数值比较时,还是要保证类型相同,不然就会出现-25>30的怪现象

2、NSUInteger严格按照类型使用,虽然不会报⚠️,但我们会拿到脏数据(不是我们想要的数据)

 

posted @ 2021-04-13 18:56  小菜看代码  阅读(263)  评论(0编辑  收藏  举报