単項演算子の結合順序の意味について


四則演算の演算子や代入演算子など二項演算子については  
結合順序(左から右、右から左)が意味をなす場面が想像しやすいのですが、  
単項演算子の結合順序が意味をなす場面が想像しにくいです。

どのような場合に意味があるのでしょうか？

例えば、単項マイナスは

[code]

    -1-1
    
[/code]

の場面に結合順序が意味をなしそうですが、  
実際には後者のマイナスは二項演算子のマイナスで、  
優先順位(単項マイナス>二項演算子の減算)に従っているだけなので、  
単項マイナスの結合順序はこの場合関係無いと思われます。

また、同様にインクリメント、デクリメント演算子の結合順序がどのような時に意味があるのか良く分かりません。

x++が「評価してから1加える」のと、  
++xが「1加えてから評価する」という違いに現れているのかとも思いましたが、  
C言語入門 (ASCII SOFTWARE SCIENCE Language)によると、  
「結合順序は優先順位が同一順位の演算子をCが評価する時の順序」  
としているので、この場合には当てはまらないと考えられます。




単項演算子が２つ以上重ねられた際に意味があるのでは？

[code]

    int i = 10;
    printf("%d\n", !!i);
    
[/code]

`i`が評価され`10`が得られます。次に`!i`で`0`になります。最後に`!!i`で`1`になります。自然な流れになるように前置単項演算子は右から、後置単項演算子は左からとなっているだけかと。

