|
|
ANSI C does not allow operations to be rearranged that are mathematically commutative and associative, but that are not actually so on the target architecture. Thus the precedence and associativity of the ANSI C grammar completely describes the grouping for all expressions; all expressions must be grouped as they are parsed. The expression under consideration is grouped in this manner:
i = { {++p + f()} + g() };(This still does not mean that f() must be called before g(), or that
p
must be incremented before g()
is called.)
In ANSI C, expressions need not be split to guard against unintended overflows.