新手C语言,这句话怎么理解??谢谢了!!!
展开全部
这是根据fun的功能的结论。
fun的功能是:
遍历从s[0]到s末尾的所有字节,如果s[i]是数字字符'0'~'9',那么将s[i]后面的所有字符(从s[i+1]直到最后的'\0')都往后移动一位,空出来的s[i+1]设为星号'*'。
如果注释“此句也可以不要”所在的i=i+1这句话没有,那么随着外层循环for (i =0, s[i]!='\0'; i++)的再一次开始,会先执行一次i++,于是s[i]就变成了刚刚插入的那个'*'。而for (i =0, s[i]!='\0'; i++)的第一判断就是“如果s[i]不是数字字符,则什么都不做”。换言之,s[i]是星号的时候,循环体会立刻完成当前这一轮,然后再度回到for (i =0, s[i]!='\0'; i++),执行i++。
简而言之,注释所在的i=i+1这句话,如果没有,只是会多执行一轮外层for循环,外层for循环的i++也能实现这个i=i+1。不影响程序结果。
如果考虑效率问题,保留i=i+1这句话的话,就可以省掉两次判断(一次是s[i] != '\0',另一次是if (s[i] >= '0' && s[i] <= '9') ),程序会快一点。
fun的功能是:
遍历从s[0]到s末尾的所有字节,如果s[i]是数字字符'0'~'9',那么将s[i]后面的所有字符(从s[i+1]直到最后的'\0')都往后移动一位,空出来的s[i+1]设为星号'*'。
如果注释“此句也可以不要”所在的i=i+1这句话没有,那么随着外层循环for (i =0, s[i]!='\0'; i++)的再一次开始,会先执行一次i++,于是s[i]就变成了刚刚插入的那个'*'。而for (i =0, s[i]!='\0'; i++)的第一判断就是“如果s[i]不是数字字符,则什么都不做”。换言之,s[i]是星号的时候,循环体会立刻完成当前这一轮,然后再度回到for (i =0, s[i]!='\0'; i++),执行i++。
简而言之,注释所在的i=i+1这句话,如果没有,只是会多执行一轮外层for循环,外层for循环的i++也能实现这个i=i+1。不影响程序结果。
如果考虑效率问题,保留i=i+1这句话的话,就可以省掉两次判断(一次是s[i] != '\0',另一次是if (s[i] >= '0' && s[i] <= '9') ),程序会快一点。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询