鱼C论坛

 找回密码
 立即注册
查看: 1332|回复: 8

[已解决]关于for循环的一个问题

[复制链接]
发表于 2023-4-19 22:14:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main()
{
        char ch[] = "ab01c40";
        int a,s = 0;
        for(a = 0 ; ch[a] ; a++)
        {
                if(ch[a]>='0' && ch[a]<='9')
                        s = s*10 + ch[a] - '0';
        }
        printf("%d",s);
}

有这样一段代码,我想问的事for语句的条件表达式ch[a]是什么意思,为什么在执行到ch[2]的时候不停止?而在最后执行完ch[6]后结束?
最佳答案
2023-4-19 22:15:48
本帖最后由 isdkz 于 2023-4-19 22:18 编辑

这段代码的主要目的是从一个包含字符和数字的字符串中提取出所有数字并将它们组合成一个整数。

for语句的条件表达式ch[a]在这里用于检查字符串中的当前字符是否为一个有效字符。

当ch[a]为0时,表示已经到达了字符串的末尾(以空字符'\0'结尾),循环将终止。

在C语言中,字符串的末尾由空字符(值为0)表示,因此ch[a]将在到达字符串末尾时变为0,从而终止循环。

在这个例子中,字符串ch[] = "ab01c40"的长度为7,最后一个字符后面是空字符。循环从索引0开始,执行到索引6(字符'0')。

在执行完ch[6]后,下一个索引a = 7处的字符是空字符,此时ch[a]的值为0,循环结束。所以,循环会在执行完ch[6]后结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-19 22:15:48 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +6 鱼币

本帖最后由 isdkz 于 2023-4-19 22:18 编辑

这段代码的主要目的是从一个包含字符和数字的字符串中提取出所有数字并将它们组合成一个整数。

for语句的条件表达式ch[a]在这里用于检查字符串中的当前字符是否为一个有效字符。

当ch[a]为0时,表示已经到达了字符串的末尾(以空字符'\0'结尾),循环将终止。

在C语言中,字符串的末尾由空字符(值为0)表示,因此ch[a]将在到达字符串末尾时变为0,从而终止循环。

在这个例子中,字符串ch[] = "ab01c40"的长度为7,最后一个字符后面是空字符。循环从索引0开始,执行到索引6(字符'0')。

在执行完ch[6]后,下一个索引a = 7处的字符是空字符,此时ch[a]的值为0,循环结束。所以,循环会在执行完ch[6]后结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-19 22:41:05 | 显示全部楼层
isdkz 发表于 2023-4-19 22:15
这段代码的主要目的是从一个包含字符和数字的字符串中提取出所有数字并将它们组合成一个整数。

for语句 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 12:27:03 From FishC Mobile | 显示全部楼层

回帖奖励 +6 鱼币

因为字符串结束符是'\0',对应的ascii是0,因此这个当ch这个字符串如果没到结尾就满足条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 12:27:25 From FishC Mobile | 显示全部楼层
ch[a]的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 13:52:31 | 显示全部楼层

回帖奖励 +6 鱼币

ai
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-20 16:12:33 | 显示全部楼层

回帖奖励 +6 鱼币

蹭币,谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 17:48:30 | 显示全部楼层

回帖奖励 +6 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 20:32:12 | 显示全部楼层
解释的很好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 20:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表