我是一名Python程序员,正在学习K&R的C语言书籍。这可能看起来是一个非常琐碎的问题,但我还是感到困惑。 下面附上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,那么这个函数的其余部分如何工作? 我可能把基础知识搞混了,但任何帮助都将不胜感激。谢谢,-Craig
int atoi(const char * s)
。) - Mat