演算子の優先順位の設計比較
DRANK

主要な言語について、演算子の優先順位の設計を比較します。自作言語の設計等に役立ててください。算術演算 vs ビット演算多くの言語では、算術演算がビット演算に優先します。*, /+, -& しかし、GoとSwiftではこれらの階層が混在しています。*, /, &+, -, 半環だと思えば似たようなもの、という発想でしょう。単項マイナス vs 冪乗冪乗の演算子 ** をもつ言語では、しばしば単項マイナスとの順序について特別なルールを持ちます。つまり、基数にマイナスがついた場合、それは項全体を反転させると考えます。この場合 -2 ** 2 は 4 ではなく -4 になります。JavaScriptの ** は、基数が前置演算となることを禁止しています。自動的に項全体に適用されることもありません。Perl, PHP, Pythonの ** は、基数についた前置演算を項全体に適用します。Rubyの ** は、基数についた単項マイナスのみを項全体に適用します。その他の演算は基数に適用されます。XOR vs OR多くの言語では、ビットごとの排他的論理和 ^ がビットごとの論理和 に優先します。Perl, Rubyでは ^ と は同じ優先順位です。GoとSwiftにおいても、前述の理由により ^ と は同じ優先順位です。等号 vs 大…

zenn.dev
Related Topics: