s[i++] = n % 10 + '0';
Средства:
s[i++]
означает номер символа i
в массиве символов s
и увеличение i
на 1
n % 10
означает, что вы берете только последнюю цифру, например, в 123
, 123 % 10
возвращает 3
, что является цифрой, это делается для разрезания вашего номера на цифры , так Вы можете создать символ с каждым из них.
+ '0'
означает, что вы добавляете значение ascii для символа '0'
, например, int 1 + '0'
возвращает символ '1'
, чтобы вы могли получить массив символов.
n /= 10
означает, что мы удаляем последнюю цифру , действительно, мы добавили ее в наш массив символов, чтобы мы могли удалить ее, например, 123 / 10 = 12
, тогда вы можете сделать 12 % 10
, чтобы получить вторая цифра: 2
Это дает нам массив символов, инвертированный, например, для 123 мы получили массив вроде {'3', '2', '1'}, поэтому в конце мы вызываем reverse s, чтобы (thx captain очевидно) полностью изменили наш char массив
Для отрицательного n
вы можете просто добавить '-'
к вашему массиву символов и умножить n
на -1
, чтобы оно стало положительным, и вы можете выполнять свою работу как всегда:)
Надеюсь, это поможет вам:)