Objective-C相同值的三向比较结果为NO - 为什么?

Lea*_*s2D 2 comparison boolean equality objective-c

考虑到所有三个变量具有相同的值,可以预期以下比较结果为YES:

NSUInteger count1 = 2;
NSUInteger count2 = 2;
NSUInteger count3 = 2;
BOOL countEqual = (count1 == count2 == count3);
// but: countEqual = NO
Run Code Online (Sandbox Code Playgroud)

Alas countEqual是NO,我想更好地理解为什么以及这个特定问题是否也出现在C或C++代码中?

我的猜测是:

(count1 == count2) --> YES (1)
(YES == count3) or (1 == count3) --> NO (0)
Run Code Online (Sandbox Code Playgroud)

Jos*_*erg 7

您的猜测完全正确,它将从第一次比较中获取结果,并将其与第3个值进行比较.要做到这一点,你需要这样做

countEqual = (count1 == count2) && (count1 == count3);