I understand most of the micro-optimizations out there but are they really useful?

Exempli gratia: does doing `++i` instead of `i++`, or `while(1)` or `for(;;)` really result in performance improvements (either in memory fingerprint or CPU cycles)?

So the question is, what micro-optimizations can be done in C? Are they really useful?