私は次の条件を試しています.コンパイラは警告を出しませんが、コードは機能していないようです. これは機能しますか?
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) は YES または NO に評価されます。これらは内部的に 1 と 0 で表されます。1 と 0 は c よりも大きい場合も、そうでない場合もあります。
コンパイラが少なくとも警告をスローするのだろうか。
あなたはそれを求めて試しましたか?