Я программист на питоне, изучающий C из книги K & R. Это будет казаться ужасно тривиальным вопросом, но, тем не менее, я в тупике.
Ниже приведен фрагмент кода из книги K & R (RIP Ritchie!), В которой реализована функция atoi ().
atoi(s) /*convert s to integer */
char s[];
{
int i, n, sign;
for (i=0; s[i]==' '||s[i] == '\n' || s[i] == '\t'; i++)
; /* skip whitespace */
sign = 1;
if (s[i] == '+' || s[i] = '-') /* sign */
sign = (s[i++] == '+') ? 1 : -1;
for (n=0; s[i] >= '0' && s[i] <= '9'; i++)
n = 10 * n + s[i] - '0';
return (sign * n);
}
Мои вопросы:
1) Служит ли первый цикл for для какой-либо цели, кроме подсчета количества допустимых символов?
2) Если (1) верно, первый цикл устанавливает значение 'i' равным количеству допустимых символов - как работает второй цикл for без сброса i в 0?
Скажем, например, я ввожу '2992' в качестве входа в функцию. Первый цикл for устанавливает i в 3, так как же работает остальная часть функции?
Возможно, у меня все основы испорчены, но любая помощь будет очень признательна. Спасибо, Крейг