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