答案用的abs函数,避免了n=-n这个赋值。但我觉得将sign声明为unsigned类型,不用abs也行,如下:
/*
* compile with reverse.c
*/
void itoa(int n, char s[])
{
int i;
unsigned sign;
if (n<0)
sign=-n;
i=0;
do {
s[i++]=sign % 10 + '0';
}while ((sign /= 10)>0);
if (n < 0)
s[i++] = '-';
s[i]='\0';
reverse(s);
}