我在读 K&R; 到目前为止,我做得很好,但是功能itoa()
中有一些我不明白的东西。他们在这里itoa()
说他们自己颠倒了数字。例如 10 是 01 (他们反转字符串):
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
return;
}
我不明白它是如何颠倒数字的。即使我们只是在做n % 10 + '0'
它的下一个数字,10 然后 1 被删除然后它变成 0 对吗?还是我不明白它的逻辑?