「演算子の優先順位」の版間の差分
削除された内容 追加された内容
94行目:
=== C言語 ===
[[C言語]]における[[ビット演算]]や[[論理演算]]の優先順位は比較演算より低い。<code>a == b && c == d</code>のように、比較結果をさらに論理演算することは通常よくあるので妥当な設計と言えるが、ビット演算の優先順位の低さについては問題があり、例えば本来<code>(x & mask)
C言語の影響を直接あるいは間接的に受けた言語のうち、[[C++]]、[[Perl]]、[[PHP (プログラミング言語)|PHP]]、[[Java]]、[[C Sharp|C#]]、[[JavaScript]]などの多くの言語は演算子の優先順位をそのまま踏襲しているが、[[Go (プログラミング言語)|Go]]のように優先順位を修正したものもある。もともとC言語においてビット演算子の優先順位に関するケアレスミスが発生しやすいのは、真偽値型([[ブーリアン型]])がなく、論理演算の結果が[[整数型]](<code>int</code>型)になるためでもあるが、後発のJavaやC#では論理演算の結果がブーリアン型になり、さらにC++と違ってブーリアン型から整数型への暗黙変換([[汎整数拡張]])もなされないため、型の不一致によるコンパイルエラーが発生することでミスが未然に発見されるケースもある。なお、C/C++においても、<code>x & mask
Cにおける[[演算子]]の優先順位は次の通りである。
|