次の値が3になるのは、すべての言語で標準ですか?
Print(6 - 2 - 1)
言い換えれば、「6-2」の前に「2-1」を評価する言語はありますか?
かっこ((6-2)-1)を本能的に挿入するのをやめることができるように、この仮定をしたいと思います。それは私をLISPの悪夢の危険にさらします。
ありがとう
次の値が3になるのは、すべての言語で標準ですか?
Print(6 - 2 - 1)
言い換えれば、「6-2」の前に「2-1」を評価する言語はありますか?
かっこ((6-2)-1)を本能的に挿入するのをやめることができるように、この仮定をしたいと思います。それは私をLISPの悪夢の危険にさらします。
ありがとう
Smalltalkには、数学的な優先順位はありません。
数学演算子は単なるメソッドマメであるため、他のメソッド名と同様に優先順位が扱われます。あなたの例は期待通りに評価されますが、例えば、ではなく1 + 2 * 3
yieldsです。9
7
一般に、複数の演算の優先順位が同じ場合、算術演算と同様に左から右に評価されます。私はすべての調査を行っていないので、すべての言語を言いたくはありませんが、そうあるべきであることは理にかなっています。私は、これから試す新しい言語については、ドキュメントを注意深く読みました。
反例に言及するために、メモリがAPLを提供する場合、APLは厳密に右結合であるため、6-2-1は5と評価されます。間違っています。
よろしく
私が知っているすべての言語は、左から右へ、予想される順序でそれを評価します。ただし、これを確認するために、使用している言語を問わず、簡単なテストを行うことをお勧めします。
必要なのは、(右から左への結合性ではなく)左から右への結合性です。
保証はされていませんが、ほとんどの言語は左から右に算術に関連付けられています。
私の知る限り、減算は常に左結合になります(明らかな理由で-それはあなたが期待することをします)。明示的に設計されていない言語もあるかもしれませんが、算術演算はほとんどの場合、期待どおりに機能するというのは安全な前提です。
心配するのをやめて、オペレーターの優先順位を信頼してください。標準の数学演算子とは異なる優先順位を持つ言語はほとんどありません。括弧を使用する場所は、優先順位の規則が何であるかが明確でない場合です。標準の数学演算子を使用すると、それは明らかです。
私が知っている唯一の言語族は優先順位がありますが、標準的な数学の規則に従わないのはAPL族、特にK言語です。このファミリには、数学および発明された演算子が多数あり、それらは厳密に右から左に評価されます。しかし、これらのタイプの言語を扱う必要がない限り、心配する必要はありません。