C ユーザーズガイド

ANSI C の規則

ANSI C では、数学的に交換可能で結合可能であるが、対象となるアーキテクチャ上では実際にそうではない演算を再配置することは許可されていません。したがって、ANSI C の文法の優先度と結合規則では、すべての式のグループ化が完全に記述されています。つまり、すべての式は、構文解析されるとおりにグループ化されなければなりません。上記の式は、次の方法でグループ化されます。


i = { {*++p + f()} + g() };

このコードでもなお「f()g() よりも前に呼び出されなければならない」、あるいは、「g() が呼び出されるよりも前に p が増分されなければならない」ということはありません。

ANSI C では、予想外のオーバーフローが発生しないように式を分割する必要があります。