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