我想看看是否if (row > -1 && row < _rows)
可以将其缩短为if (-1 < row < _rows)
. 我使用下面的测试来找出(它没有返回任何编译错误)。
int x = 5;
BOOL test1 = NO;
BOOL test2 = NO;
BOOL test3 = NO;
if (x < 6 && x > 4) {
test1 = YES;
}
if (4 < x < 6) {
test2 = YES;
}
if (5 < x < 7) {
test3 = YES;
}
所有三个测试都出现了YES
,包括第三个,如果我的语法正确,应该是NO
. 看起来这不是有效的语法,但我的问题是,当语法(5 < 5 < 7)
返回 true 时,编译器实际上在做什么?