21

プログラミング言語での演算子の優先順位が実装に依存するのか、それともすべての言語が従う固定規則があるのか​​を知りたいです。また、可能であれば、優先順位が最も高い次の演算子を最初に注文できますか:AND、OR、NOT、XOR。

4

5 に答える 5

20

グーグルで調べたところ、APLやSmallTalkなどの一部の言語には演算子の優先順位規則がなく、式を左から右/左から右に厳密に評価していることがわかりました

ただし、ほとんどの言語、特にCから派生した言語では、相対的な優先順位はNOT> XOR>AND>ORです。

于 2012-09-19T12:35:24.900 に答える
12

式が&&と||を組み合わせると その評価は正しい順序で行う必要があります。括弧は、算術演算の場合と同様に、オペランドを正しい演算子でグループ化するために使用できます。また、算術演算子と同様に、論理演算子には、括弧がない場合に物事をグループ化する方法を決定する優先順位があります。

式では、優先順位が最も高い演算子が最初にそのオペランドでグループ化され、次に最も高い演算子がそのオペランドでグループ化されます。同じ優先順位の論理演算子が複数ある場合は、左から右に調べられます。

プログラマーは、演算子の優先順位だけが機能する場合でも、読みやすくするために括弧を使用してオペランドをグループ化するのが一般的です。

ここに画像の説明を入力してください

ソース

于 2018-10-20T09:06:53.267 に答える
4

ブールまたはビット単位?決まったルールはありません。ほとんどの言語には同様のルールがありますが、詳細が異なります。言語定義で調べてください。

于 2012-09-21T18:42:29.483 に答える
3

3つの基本的なブール演算子があります:NOT、AND、OR。A AND NOT B OR NOT A AND BXORは、またはの単純なバージョンです(A OR NOT B) AND (NOT A OR B)。したがって、これら3つだけが共通の優先順位を持ちます:NOT>AND>OR。XORは言語での位置が異なりますが、ANDよりも優先順位が高くなく、ORよりも低くないことは確かです。ほとんどの言語(C / C ++ / Javascriptなど)ではANDとORの間にありますが、他の言語(Perlなど)ではXORの優先順位はORと同じです。

(ORはANDとNOTのみを使用して表現できますが、それでも基本的な演算子ですA OR B = NOT(NOT A AND NOT B):)

于 2016-03-30T21:38:12.497 に答える
1

ANDがORよりも優先順位が高いことを証明する明白で簡単な方法は、括弧がある場合とない場合のステートメントの結果を比較することです。

std::cout << std::boolalpha;
std::cout << ( true || false && false )     << std::endl;   // gives true
std::cout << ( ( true || false ) && false ) << std::endl;   // gives false
于 2021-01-03T22:57:52.367 に答える