gpt4 book ai didi

c - 试图理解 itoa 功能

转载 作者:行者123 更新时间:2023-12-01 09:07:11 26 4
gpt4 key购买 nike

我试图重写 K&R 练习中的 itoa() 函数,但未能定义它。我在库中看到函数的答案,但我无法理解 do block 中的内容。请向我解释一下。谢谢!

 /* itoa:  convert n to characters in s */
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);
}

最佳答案

s[i++] = n % 10 + '0';意思是:

  1. s[i++]表示字符编号 i在字符数组中 s并增加 i 1
  2. n % 10意味着您只取最后一位数字,例如 123 , 123 % 10返回 3这是一个数字,这样做是为了将您的数字切成数字,这样您就可以用每个数字创建一个字符。
  3. + '0'意味着您添加 char '0' 的 ascii 值,例如 int 1 + '0'返回字符 '1'这样你就可以获得一个字符数组。
  4. n /= 10意味着我们删除了最后一位数字,实际上,我们将它添加到我们的字符数组中以便我们可以删除它,例如 123 / 10 = 12那么你可以做 12 % 10得到第二个数字:2

这给了我们一个反转的 char 数组,例如对于 123,我们得到了一个类似 {'3', '2', '1'} 的数组,所以最后我们调用 reverse s 来(thx captain obvious)反转我们的 char数组

对于否定 n你可以只添加一个 '-'到你的 char 数组并乘以你的 n通过 -1所以它变得积极,你可以像往常一样做你的工作:)

希望对你有帮助:)

关于c - 试图理解 itoa 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51190246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com