在 Cocoa 的 NSRange.h 中,我注意到了以下的内联函数:
我觉得作者使用条件运算符返回YES和NO,而不是像下面的函数一样写,这让我感到困惑:
NS_INLINE BOOL NSLocationInRange(NSUInteger loc, NSRange range) {
return (!(loc < range.location) && (loc - range.location) < range.length) ? YES : NO;
}
我觉得作者使用条件运算符返回YES和NO,而不是像下面的函数一样写,这让我感到困惑:
NS_INLINE BOOL NSLocationInRange(NSUInteger loc, NSRange range) {
return (!(loc < range.location) && (loc - range.location) < range.length);
}
为什么前者更可取呢?通常我认为这只是一种古怪的编程风格,但我想知道(可能是错误的),因为它出现在苹果的一个公共.h文件中是否有我所忽略的东西...
&&
这样的操作产生一个值为0
或1
的int
类型。 - DarkDust