考虑到所有三个变量都具有相同的值,因此可以预期以下比较结果为“是”:

NSUInteger count1 = 2;
NSUInteger count2 = 2;
NSUInteger count3 = 2;
BOOL countEqual = (count1 == count2 == count3);
// but: countEqual = NO


count countEqual是NO,我想更好地理解为什么以及在C或C ++代码中是否还会出现此特定问题?

我的猜测是:

(count1 == count2) --> YES (1)
(YES == count3) or (1 == count3) --> NO (0)

最佳答案

其他发布者已经提供了答案,因此我只引用规范的相关部分对此进行确认:


==(等于)和!=(不等于)运算符与关系运算符类似,只是它们的优先级较低。如果指定的关系为true,则每个运算符的结果为1,如果为false,则结果为0。


平等是关联的,因此它被解释为:

count1 == count2 == count3
(count1 == count2) == count3
(1) == count3
0

10-04 09:57