Apparently
--us has the same result as
us--, but when it is used in a comparison, the
-- before
us means that C will decrement the value FIRST, before the comparison, while
-- after
us means that C will decrement the value AFTER the comparison. If you use it
us--; or
--us; alone, both give the same result. You may say why the creators of C placed such ambiguous operations in the language. Well, once you learn it deeply, it is a language that allows you to write a very compact and intelligently optimized code. 20 years ago, there used to be C programming contests, where you could do very very complex things in just one line of code. Of course the resulting code was write only, and not meant to be read by mere mortals.
I consider wiring implementation of delayMicroseconds() a bug... the programmer should have used
if (us-- <= 1)
return;
Probably he/she assumed that nobody wants to invoke a delay routine to wait 0 units of time... but it was a wrong assumption after all.