Notes
Unary +, - and * have precedence
over the binary forms. Operator () refers to a function call.
Precedence determines the order in which
operands are bound to operators. Operators on the same line
have the same precedence; rows are in order of decreasing
precedence. C does not specify the order in
which the operands of an operator are evaluated. Similarly,
the order in which function arguments are evaluated is not
specified. Examples of code that should be rewritten:
x = f() + g();
a[i] = i++;
printf("%d %d\n",++n,power(2,n));
z = x / ++x;
|
Standard Guarantees
A program should not depend on the order of
evaluation of operands in an expression, except as guaranteed
by the standard for the following operators.
All of these guarantee that expression a
will be computed before expression b (or c).
1. a, b comma operator (not the comma between arguments)
2. a && b logical and
3. a || b logical or
4. a ? b : c conditional
|
In a function-call all arguments are evaluated before control
transfers to the function.
Each full expression is evaluated before the next expression
is evaluated.
6. each expression that is not part of another expression
|
|