But how would you then fix the sign-compare violation, or
would you just let this one go?
If you want it to be more compact:
unsigned int i;
...
for (i = sizeof(foo) / sizeof(foo[0]) - 1; ~i; --i)
Tested? No.
Readable? Don't ask me... :-)
Cheers,
Peter