演算子の字句解析

VS2010 の VC++ で調査。

// このコードは・・・
i+++++++++j;

// このように解釈され、インクリメント演算子の対象が左辺値では無くなるのでコンパイルエラーとなる
((((i++)++)++)++) + j;
// このコードは・・・・
i+-+-+-+-+-+-j;

// このように解釈され、単項の "+" や "-" が連なっているだけなので実行できる
i + (-(+(-(+(-(+(-(+(-(+(-j)))))))))));
// このコードは・・・
i++-j;

// このように解釈される
(i++) - j;

// 一方このコードは・・・
i+ +-j;

// このように解釈され、スペースの有無で異なる結果となる
i + (+(-j));