【问题标题】:NSNotFound, NSInteger, NSUInteger, and NSRange.locationNSNotFound、NSInteger、NSUInteger 和 NSRange.location
【发布时间】:2011-06-15 15:50:30
【问题描述】:

NSNotFound定义为NSIntegerMaxLONG_MAX定义为。

NSRange.location 被定义为NSUInteger

一些 Foundation 方法返回一个NSRange,其位置值为NSNotFound

所以,人们经常做这样的比较:

if (aRange.location == NSNotFound) 

但这不是应该产生警告的有符号和无符号整数之间的比较吗?

【问题讨论】:

    标签: cocoa compare


    【解决方案1】:

    您正在将一个无符号(64 位)变量与一个有符号常量 进行比较,该变量也适合该变量的范围(它不是负数)。所以不需要警告。

    当与两侧的负常数或变量进行比较时,通常会出现警告(即一部分为负数或可能为负数,而另一部分仅为正数或零)。

    附注:NSNotFound 在 32 位和 64 位平台上是不同的,所以不要在任何地方硬编码或存储该值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-26
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      相关资源
      最近更新 更多