CとC++の演算子
以下の表は、C++とCにおける優先順位と結合性を示したものである(なお、Java, Perl, PHPなど最近の言語の多くは同様の優先順位を持つ)。演算子は優先順位の低いものほど下のほうに掲載されている。同じセルに掲載されている演算子同士は同じ優先度を持つ。なお、たとえ多重定義しても、演算子の優先順位は変化しない。
CやC++において、演算子の構文は文脈自由文法にて定義されている。この表は、その構文より導き出されるものである。
この表では、正確に表現できていない部分が一部に存在する。たとえば、条件演算子は、代入やコンマ演算子より高い優先度を持つものの、中央のオペランドではそれらを含むすべての演算子の使用が可能である。すなわち、a ? b , c : dはa ? (b, c) : dと解釈される。また、(a ? b), (c : d)は意味を成さず、コンパイルエラーとなる。なお、括弧で囲われていない型変換式の結果はsizeofの対象となれない。つまり、sizeof (int) * xは(sizeof(int)) * xの意味となりsizeof ((int) * x)とはならない。