Во, вчера нарвался в исходниках v-usb:
CODE
char i;
...
i = len;
do{ /* if len == 0, we still copy 1 byte, but that's no problem */
*p++ = *data++;
}while(--i > 0); /* loop control at the end is 2 bytes shorter than at beginning */
И ни дай бог компилятор решит, что char по умолчанию беззнаковый...