鱼C论坛

 找回密码
 立即注册
查看: 1795|回复: 4

[已解决]for循环定义变量

[复制链接]
发表于 2019-5-24 17:31:54 | 显示全部楼层 |阅读模式

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

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

x
@小甲鱼

int main()
{
    char s1[MAX];
    int i1 = 0,i2,i3;
    printf("请输入英文文本");
    while((s1[i1++] = getchar()) != '\n')
        ;

    for(i2 = 0; i2 < strlen(s1) - 1; i2++)
    {
        char c = s1[i2];
    }
    printf("%c", c);
}
运行报错,提示未声明变量c,在for循环中无法声明变量吗,还是说我的编译器有问题
原文:error: 'c' undeclared (first use in this function)|

最佳答案
2019-5-24 17:48:16
变量是有作用范围的,你的c被括号括起来了,只能作用在for循环内。在for循环外是无法被识别到的。。。要多努力看基础语法,多思考多努力,编程之路才能走的更远。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-24 17:47:09 | 显示全部楼层
本帖最后由 pheron 于 2019-5-24 17:48 编辑

一定是不能在这里声明变量c的呀,就算成功了,每次循环都会声明一次变量c。
你编译器给你报的错是在printf那一行的吧,如果for循环没执行的话,确实就没有声明变量c,编译器是不会去给你判断循环到底有没有执行的,大概直接跳过去了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 17:48:16 | 显示全部楼层    本楼为最佳答案   
变量是有作用范围的,你的c被括号括起来了,只能作用在for循环内。在for循环外是无法被识别到的。。。要多努力看基础语法,多思考多努力,编程之路才能走的更远。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 17:55:39 | 显示全部楼层
pheron 发表于 2019-5-24 17:47
一定是不能在这里声明变量c的呀,就算成功了,每次循环都会声明一次变量c。
你编译器给你报的错是在printf ...

变量的申明是静态的,也就是说在编译的时候编译器就会判断这个变量有没有申明。和for循环没关系的。即便是for循环执行了,c还是没申明。你俩都得努力了,基础语法第一层是学会、第二层就是理解了。有时间可以看看编译原理,可以领悟很多东西。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-25 10:39:00 From FishC Mobile | 显示全部楼层
musilintan 发表于 2019-5-24 17:55
变量的申明是静态的,也就是说在编译的时候编译器就会判断这个变量有没有申明。和for循环没关系的。即便 ...

是的,也就刚看完c primer plus而已,很多东西都还没融会贯通。一时没往变量的作用域考虑…只考虑了一些编译的事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 19:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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