我正在阅读K&R;到目前为止,我做得很好,但有一些功能itoa()
,我不明白。他们在itoa()
这里说他们自己将数字逆转。例如10是01(它们反转字符串):我不明白itoa()在K&R书
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右?或者我不明白它的逻辑?
请使用标点符号并避免运行句子。阅读你的问题是非常困难的。 – 2009-10-02 16:11:22
请注意,此代码不能可靠地转换INT_MIN。 – 2009-10-02 16:29:08
@Jonathan你会推荐什么来解释INT_MIN的可移植性?谢谢! – sigjuice 2009-10-02 21:35:20