《the c programming language》中的strlen()中的i没初始化,这是错的吧

《the c programming language》中的strlen()中的i没有初始化,这是错的吧?
在《the c programming language》2.3节后半部分出现一个函数:


/* strlen: return length of s */
int strlen(char s[])
{
    int i;
    while (s[i] != '\0')
        ++i;
    return i;
}

其中,i没有初始化。这是错的吧?
你们怎么看?

------解决方案--------------------
i 必须初始化,但如果不初始化,系统会给它一个赋初值的
------解决方案--------------------
恩。楼主是对的,要初始化的,不然应该是错的。
------解决方案--------------------
书上错了!!!
------解决方案--------------------
应该要初始化,不同的编译器会赋不同的值
------解决方案--------------------
引用:
书上错了!!!

好像没有错
::::
内存中供用户使用的存储空间分为代码区与数据区两个部分。变量存储在数据区,数据区又可分为静态存储区与动态存储区。 
    静态存储是指在程序运行期间给变量分配固定存储空间的方式。如全局变量存放在静态存储区中,程序运行时分配空间,程序运行完释放。 
    动态存储是指在程序运行时根据实际需要动态分配存储空间的方式。如形式参数存放在动态存储区中,在函数调用时分配空间,调用完成释放。 
    对于静态存储方式的变量可在编译时初始化,默认初值为O或空字符。对动态存储方式的变量如不赋初值,则它的值是一个不确定的值。 
------解决方案--------------------
LZ对的,书上错了。

------解决方案--------------------
引用:
引用:书上错了!!!
好像没有错
::::
内存中供用户使用的存储空间分为代码区与数据区两个部分。变量存储在数据区,数据区又可分为静态存储区与动态存储区。 
    静态存储是指在程序运行期间给变量分配固定存储空间的方式。如全局变量存放在静态存储区中,程序运行时分配空间,程序运行完释放。 
    动态存储是指在程序运行时根据实际……


按照LZ给出的代码,这个i应该是动态存储的,并没有static声明,所以明显是错的!
------解决方案--------------------
如果你能保证这确实是书上的一模一样的代码的话,那书就是错了。
------解决方案--------------------
i 是非静态临时变量,值不定。