Estoy leyendo K & R; hasta ahora estoy bien con eso, pero hay algo en la función itoa()
que no entiendo. Aquí en itoa()
dicen que invierten los números ellos mismos. Por ejemplo 10 es 01 (invierten la cadena):No entiendo itoa() en el libro de 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;
}
No entiendo cómo se ha invertido el número. A pesar de que solo estamos haciendo n % 10 + '0'
, entonces es el siguiente dígito, que 10 luego 1 se borra y luego va a 0 ¿verdad? ¿O no entiendo su lógica?
Por favor use la puntuación y evite las oraciones de run-on. Es muy difícil leer tu pregunta. –
Tenga en cuenta que este código no convierte INT_MIN de manera confiable. –
@Jonathan ¿Qué recomendarías para representar INT_MIN de forma portátil? ¡Gracias! – sigjuice