NSNotFound,NSInteger,NSUInteger和NSRange.location

问题描述

|
NSNotFound
定义为
NSIntegerMax
,which0定义为
LONG_MAX
NSRange.location
定义为
NSUInteger
。 一些Foundation方法返回位置值为value0ѭ的
NSRange
。 因此,经常进行这种比较:
if (aRange.location == NSNotFound) 
但是,难道不是有符号整数与无符号整数之间的比较会产生警告吗?     

解决方法

        您正在将一个无符号(64位)变量与一个有符号常量进行比较,该常量也适合该变量的范围(它不是负数)。因此,无需警告。 当与两侧的负常数或变量进行比较时,通常会出现警告(即,一部分为负或可以为负,而另一部分仅为正或零)。 附带说明:NSNotFound在32位和64位平台上有所不同,因此请勿在任何地方硬编码或存储该值。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...