我试图itoa()从K&R练习中重新编写函数,但我没有定义它.我在库中看到了函数的答案,但我无法理解do块中的内容.请向我解释一下.谢谢!
 /* 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);
 }
Run Code Online (Sandbox Code Playgroud)
    小智 5
s[i++] = n % 10 + '0'; 手段:
s[i++]表示char i数组中的char数,s并递增i1n % 10意味着你只取最后一位数字,例如in 123,123 % 10返回3一个数字,这样就可以将你的数字切成数字,这样你就可以用它们各自创建一个字符.+ '0'表示您添加char的ascii值'0',例如int 1 + '0'返回该字符,'1'以便您可以获取char数组.n /= 10意味着我们删除了最后一个数字,实际上,我们将它添加到我们的char数组中,以便我们可以删除它,例如,123 / 10 = 12然后你可以做到12 % 10第二个数字:2这给了我们倒置的char数组,例如对于123,我们得到了一个类似{'3','2','1'}的数组,所以最后我们调用reverse s to(thx captain)反向我们的char数组
对于否定的n你可以添加一个'-'你的char数组并乘以你n的-1所以它变得积极,你可以像往常一样做你的工作:)
希望它能帮到你:)