Next: Line Continuation, Previous: Identifiers, Up: Lexical Syntax [Contents][Index]
Here we describe the lexical syntax of operators and punctuation in C. The specific operators of C and their meanings are presented in subsequent chapters.
Most operators in C consist of one or two characters that can’t be used in identifiers. The characters used for operators in C are ‘!~^&|*/%+-=<>,.?:’.
Some operators are a single character. For instance, ‘-’ is the operator for negation (with one operand) and the operator for subtraction (with two operands).
Some operators are two characters. For example, ‘++’ is the increment operator. Recognition of multicharacter operators works by grouping together as many consecutive characters as can constitute one operator.
For instance, the character sequence ‘++’ is always interpreted
as the increment operator; therefore, if we want to write two
consecutive instances of the operator ‘+’, we must separate them
with a space so that they do not combine as one token. Applying the
same rule, a+++++b
is always tokenized as a++ ++ + b
, not as a++ + ++b
, even though the latter could be part
of a valid C program and the former could not (since a++
is not an lvalue and thus can’t be the operand of ++
).
A few C operators are keywords rather than special characters. They
include sizeof
(see Type Size) and _Alignof
(see Type Alignment).
The characters ‘;{}[]()’ are used for punctuation and grouping. Semicolon (‘;’) ends a statement. Braces (‘{’ and ‘}’) begin and end a block at the statement level (see Blocks), and surround the initializer (see Initializers) for a variable with multiple elements or fields (such as arrays or structures).
Square brackets (‘[’ and ‘]’) do array indexing, as in
array[5]
.
Parentheses are used in expressions for explicit nesting of
expressions (see Basic Arithmetic), around the parameter
declarations in a function declaration or definition, and around the
arguments in a function call, as in printf ("Foo %d\n", i)
(see Function Calls). Several kinds of statements also use
parentheses as part of their syntax—for instance, if
statements, for
statements, while
statements, and
switch
statements. See if
Statement, and following
sections.
Parentheses are also required around the operand of the operator
keywords sizeof
and _Alignof
when the operand is a data
type rather than a value. See Type Size.
Next: Line Continuation, Previous: Identifiers, Up: Lexical Syntax [Contents][Index]