ふ、甘いわ。これで分岐なしで済む。
ifは元のままで
do *p++ = '0' + (n % 10u); while(n /= 10u);