A punctuator is a token that has syntactic and semantic meaning to the compiler, but the exact significance depends on the context. A punctuator can also be a token that is used in the syntax of the preprocessor.
C99 and C++ define the following tokens as punctuators, operators, or preprocessing tokens:
| [ ] | ( ) | { } | , | : | ; |
| * | = | ... | # | ||
| . | -> | ++ | -- | ## | |
| & | + | - | ~ | ! | |
| / | % | << | >> | != | |
| < | > | <= | >= | == | |
| ^ | | | && | || | ? | |
| *= | /= | %= | += | -= | |
| <<= | >>= | &= | ^= | |= |
In addition to the C99 preprocessing tokens, operators, and punctuators, C++ allows the following tokens as punctuators:
| :: | .* | ->* | new | delete | |
| and | and_eq | bitand | bitor | comp | |
| not | not_eq | or | or_eq | xor | xor_eq |
Related information
Both C and C++ provide the following alternative representations for some operators and punctuators. The alternative representations are also known as digraphs.
| Operator or punctuator | Alternative representation |
|---|---|
| { | <% |
| } | %> |
| [ | <: |
| ] | :> |
| # | %: |
| ## | %:%: |
In addition to the operators and punctuators listed above, C++ and C at the C99 language level provide the following alternative representations. In C, they are defined as macros in the header file iso646.h.
| Operator or punctuator | Alternative representation |
|---|---|
| && | and |
| | | bitor |
| || | or |
| ^ | xor |
| ~ | compl |
| & | bitand |
| &= | and_eq |
| |= | or_eq |
| ^= | xor_eq |
| ! | not |
| != | not_eq |
Related information