<p>In C#, does anybody know why the following will compile:</p>

<pre><code>int i = 1;
++i;
i++;
</code></pre>

<p>but this will not compile?</p>

<pre><code>int i = 1;
++i++;
</code></pre>

<p>(Compiler error: The operand of an increment or decrement operator must be a variable, property or indexer.)</p>

My guess: to avoid such ugly and unnecessary constructs. Also it would use 2 operations (2x INC) instead of one (1x ADD 2).
Yes, i know ... "but i want to increase by two and i'm a l33t g33k!"
Well, don't be a geek and write something that doesn't look like an inadvertent mistake, like this:
```
```
i += 2;
```
```