我正在尝试以下条件,编译器没有发出警告,但代码似乎不起作用。这应该工作吗?
if (self.finishLine > hero.position.y > self.startHeight)
{
hero.position = CGPointMake( hero.position.x + translation.x, hero.position.y);
}
我正在尝试以下条件,编译器没有发出警告,但代码似乎不起作用。这应该工作吗?
if (self.finishLine > hero.position.y > self.startHeight)
{
hero.position = CGPointMake( hero.position.x + translation.x, hero.position.y);
}
比较运算符返回布尔值。
(self.finishLine > hero.position.y > self.startHeight)
-> ((self.finishLine > hero.position.y) > self.startHeight)
-> ((<0 或 1> > self.startHeight)
我怀疑 self.startHeight 永远小于 1,更不用说小于 0。
C中的正确形式是:
((self.finishLine > hero.position.y) && (hero.position.y > self.startHeight))
我没有尝试过,但我相信这是一个有效的表达方式。AFAIK Objective C 不支持三明治..
(a > b > c) 应该分别评估为 TRUE 或 FALSE YES 或 NO。但是怎么做?编译器将从左到右开始,因为所有运算符都是相等的。(a > b) 将评估为是或否。它们在内部由 1 和 0 表示。1 和 0 可能大于或不大于 c。
我想知道编译器是否至少会发出警告。
你去尝试过吗?