ほとんどのプログラミング言語では、数学演算子の優先順位が論理演算子の優先順位と異なるのはなぜですか。
意味:論理演算子で評価されるのと同じ優先順位を持つようにx / y * z
評価されるのはなぜですか?
この区別には論理的な理由(ハードウェアの理由、最適化手法)がありますか、それともプログラミング言語の作成者が決定した方法ですか?彼ら??( x / y ) * z
/
*
x || y && z
x || ( y && z )
ほとんどのプログラミング言語では、数学演算子の優先順位が論理演算子の優先順位と異なるのはなぜですか。
意味:論理演算子で評価されるのと同じ優先順位を持つようにx / y * z
評価されるのはなぜですか?
この区別には論理的な理由(ハードウェアの理由、最適化手法)がありますか、それともプログラミング言語の作成者が決定した方法ですか?彼ら??( x / y ) * z
/
*
x || y && z
x || ( y && z )
プログラミングではありません。ブール代数を使用したことがありますか?ANDはORよりも優先され、ブール代数は17世紀のものです(この規則がいつなったのかはわかりませんが)。この2つは*と+とも表記され、その点で手がかりが得られます(ただし、他の人と混同される可能性があります)。
プログラミング言語の設計者は、算術演算子の優先順位を引き継いだのと同じように、これらの優先順位規則を引き継いだだけです。
おそらく、プログラミング言語の作成者がそれらを作成することを決定した方法です。
より具体的には、括弧がない場合、プログラマーはORの前にANDステートメントを評価することを望む可能性があります。
言い換えれば|| は「左から右への加算または減算」のようなものであり、&&は「左から右への乗算の除算」のようなものです。
また、覚えておいてください!(not)は&&(AND)よりもさらに優先されます