演算子と項から成る式である。
数式などで見慣れている以下のような、
〈式〉〈演算子〉〈式〉
というような構文となる。FORTRANのように数値計算のことだけを考えていれば良かった時代にはごく普通の言語機能だと考えられていたが、その後あらゆるデータ型をプログラミング言語が扱うようになった際に、それらのデータ型と演算子をどう扱うかは、言語ごとにまちまちとなった。言語によっては、代入なども、代入演算子などによる式でおこなうという設計の場合もある。
このような構文における頭痛のタネに、「演算子の結合性」(en:Operator associativity)と「演算子の優先順位」(operator precedence)がある。直感的には、少なくとも初等教育以来ずっと慣れている「乗除が先、加減が後」という規則があったほうがわかりやすいが、その他にもいくつもの「コンピュータのプログラミングではこれも使いたい」という演算、たとえばビット演算などを追加してゆくと、階層が何段階も増えてしまう。
C言語の設計ミスに、ビット演算子の & や | の優先順位が == よりも低い、という点があるが、これは以前にはC言語に論理演算子の && や || が無く、文脈によって演算子の意味が変わるという仕様であったことが遠因である[2]。
そういったように、演算子が関係する文法の仕様を設計するのは難しく、さらに近年は前述のようにデータ型が増えたことによって余計に難しい要素が増えている。後述するような、他の種類の演算子も含めるとさらに複雑になる。
やはり初等教育以来慣れている前置マイナス演算子を使いたいという要求はあるが、そうすると対称性のためにプラスの演算子も欲しいということになったり、そうすると前述の二項演算と同じ記号を使うことで字句解析・構文解析が複雑になることもある。単純にするために、前置マイナス演算子を - 以外の記号とすることもある。C言語のように多くの前置演算子がある言語もある。
C言語の場合、(後置の)++ と -- すなわちインクリメントとデクリメントの演算子の他、expression.name と expression->name のような構造体などの要素の選択も構文的には後置演算子である。