A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int  num =0;
    int i =1;
    for (          ; i<=5; i++)//int i =1 变量要是在for循环里面,那么下面if函数中的i==6就会报错,也就是说for声明的一个初始化表达式变量只在for循环里面有效!
    {
        printf("请输入第%d个人的年龄:\n",i);
        int guess=0;
        scanf("%d",&guess);
        num+=guess;
        
        if (guess>100||guess<0)
        {
            printf("您输入的年龄错误!\n");
            break;
        }
        
    }
    if (i==6)//如果上面的int i =1在for循环里面,此处就会报错!
    {
        printf("五个人的总年龄是:%d,平均年龄是:%.2lf",num,1.0*num/5);
    }

19 个回复

倒序浏览
我怎么完全看不懂,你不如截图发上来好看点
回复 使用道具 举报
是的,for循环与while循环的区别就是,while循环只能使用外面的变量,而for循环直接把变量写到括号里面,执行完毕变量回收,可以提高性能,所以一般常用for循环
回复 使用道具 举报
肯定报错啊,int i如果是在for循环条件中定义的,for循环完这个代码段内存就释放了,左右东西都消失了。
而且你最后的if没必要放在for循环外面啊,完全可以写到里面就行了,而且也可以用else if连着写,不用在定义一个if循环
回复 使用道具 举报
变量 i 声明在for结构中,属于局部变量,当所属作用域执行完毕后,就会回收,也就是说只在for结构中有效。
回复 使用道具 举报
楼上说的都很有道理啊
回复 使用道具 举报
因为你把声明放循环里面,外面的if找不到你声明的i了;你在外面先声明i,i的作用域是整个main函数,所以if函数才能调用得到i
回复 使用道具 举报
你以为我会告诉你?
回复 使用道具 举报
chensc 金牌黑马 2016-2-10 19:51:48
9#
学习学习!
回复 使用道具 举报
奔跑的蚂蚁iOS 来自手机 初级黑马 2016-2-10 21:32:47
10#
wx_MkPtTU4D 发表于 2016-1-29 00:12
int  num =0;
    int i =1;
    for (          ; i100||guess

肯定报错啊,局部变量的作用域在一对{}之间。就好像两个并列的for循环可以定义两个同名的变量,道理是一样的。
回复 使用道具 举报
zp2161132 发表于 2016-1-29 00:59
我怎么完全看不懂,你不如截图发上来好看点

回复 使用道具 举报
石门一梦 发表于 2016-1-29 10:18
是的,for循环与while循环的区别就是,while循环只能使用外面的变量,而for循环直接把变量写到括号里面,执 ...

谢谢   表示新手正在摸索
回复 使用道具 举报
wanghui001001 发表于 2016-1-29 15:39
肯定报错啊,int i如果是在for循环条件中定义的,for循环完这个代码段内存就释放了,左右东西都消失了。
而 ...

表示谢谢  正在努力学习中
回复 使用道具 举报
ios_Beginner 发表于 2016-1-29 18:38
变量 i 声明在for结构中,属于局部变量,当所属作用域执行完毕后,就会回收,也就是说只在for结构中有效。 ...

是的   就是这个问题
回复 使用道具 举报
奔跑的蚂蚁iOS 发表于 2016-2-10 21:32
肯定报错啊,局部变量的作用域在一对{}之间。就好像两个并列的for循环可以定义两个同名的变量,道理是 ...

谢谢  
回复 使用道具 举报
曦正 发表于 2016-2-9 15:42
因为你把声明放循环里面,外面的if找不到你声明的i了;你在外面先声明i,i的作用域是整个main函数,所以if ...

谢谢  有用的  相互学习;
回复 使用道具 举报
wx_MkPtTU4D 发表于 2016-2-15 17:05
谢谢  有用的  相互学习;

嗯,要注意变量的作用域
回复 使用道具 举报
曦正 发表于 2016-2-15 18:32
嗯,要注意变量的作用域

好的  明天开班,学习到第7天了!
回复 使用道具 举报
好好好好

评分

参与人数 1黑马币 +13 收起 理由
甲岸科技园 + 13

查看全部评分

回复 使用道具 举报
是的,上面int i的作用域就是在for循环里面,出了就从内存中清除了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马