Tôi đang đọc K & R; cho đến nay tôi đang làm tốt với nó, nhưng có cái gì đó trong chức năng itoa()
mà tôi không hiểu. Ở đây trong itoa()
họ nói rằng họ đảo ngược những con số mình. Ví dụ 10 là 01 (họ đảo ngược chuỗi):Tôi không hiểu itoa() trong sách 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;
}
Tôi không hiểu nó như thế nào đảo ngược số. Mặc dù chúng tôi chỉ đang thực hiện n % 10 + '0'
sau đó chữ số sau của nó mà 10 sau đó 1 bị xóa sau đó nó đi đến 0 phải không? Hoặc tôi không nhận được logic của nó?
Vui lòng sử dụng dấu chấm câu và tránh các câu chạy. Rất khó để đọc câu hỏi của bạn. –
Lưu ý rằng mã này không chuyển đổi INT_MIN đáng tin cậy. –
@Jonathan Bạn muốn giới thiệu tài khoản nào cho INT_MIN một cách hợp lý? Cảm ơn! – sigjuice