Я не могу понять следующий код реализации atoi
, особенно эту строку:
k = (k << 3) + (k << 1) + (*p) - '0';
Вот код:
int my_atoi(char *p) {
int k = 0;
while (*p) {
k = (k << 3) + (k << 1) + (*p) - '0';
p++;
}
return k;
}
Может кто-нибудь объяснить это мне?
Другой вопрос: каким должен быть алгоритм atof
реализации?