区切り子 は、コンパイラーに対して構文上意味を持つトークンですが、 正確な重要度はコンテキストによって異なります。区切り子は、プリプロセッサーの構文で使用するトークンとすることもできます。 C89 言語レベルで、 区切り子はアクションを起こしません。例えば、コンマは、引き数リストまたは初期化指定子リストの区切り子ですが、 括弧で囲んだ式の中で使用される場合は演算子です。
C89 言語レベルで、区切り子は、以下のようなトークンを分離する文字とすることができます。
[ ] |
( ) |
{ } | , | : | ; |
または、以下のもの。
* | = | ... | # |
C89 では、番号記号 # の使用は、プリプロセッサー・ディレクティブのみに制限されています。
C99 言語レベルでは、区切り子の適正なトークンまたはプリプロセス・トークンの数は増加し、 C 演算子を包含します。 実行するオペレーションを指定する区切り子は、 演算子 として知られます。区切り子と演算子の区別は、 C++ によっても使用されます。 C89 区切り子に加え、 C99 は以下のトークンを区切り子、演算子、またはプリプロセス・トークンとして定義します。
. | -> | ++ | -- | ## | |
& | + | - | ~ | ! | |
/ | % | << | >> | != | |
< | > | <= | >= | == | |
^ | | | && | || | ? | |
*= | /= | %= | += | -= | |
<<= | >>= | &= | ^= | |= | |
<: | :> | <% | %> | %: | %:%: |
C99 プリプロセス・トークン、演算子、および区切り子に加え、
C++ は以下のトークンを区切り子として許可します。
:: | .* | ->* | new | delete | |
and | and_eq | bitand | bitor | comp | |
not | not_eq | or | or_eq | xor | xor_eq |
関連参照