免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14696 | 回复: 56
打印 上一主题 下一主题

[C] c语言中关于for循环的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-03 16:08 |只看该作者 |倒序浏览
今天学习c语言中的循环,对于书中的几句话很是纠结,不知道什么意思,在晚上查查也查不到。所以在这里只有求助于各位大哥了。我在这里先谢谢了。下面是两段代码:
第一段:
#include <stdio.h>
int main(void)
{
        int count =0;
        for(count = 1;count <= 10; ++count)
                printf("%d\t",count);
            printf("we have finished\n");
                printf("%d",count);
        return 0;
}
第二段:
#include <stdio.h>
int main(void)
{
        for(int count = 1;count <= 10; ++count)
                printf("%d\t",count);
            printf("we have finished\n");
                printf("%d",count);
        return 0;
}
书上说:通常情况下,除非控制循环的变量非常靠近循环语句,否则最好在第一个控制表达式中初始化它。这样可以避免潜在的错误也可以在第一个控制表达式中声明循环变量,此时,该变量是循环的本地变量。循环结束后他就不存在了。所以不能在循环结束后输出它的值。如果需要在循环的外部访问循环控制变量,就应该在循环前面的一个语句中声明它。
蓝色的句子我明白,但是红色的我就弄不懂了。照这样说,上面两段代码输出结果应该有所不同,但是实际的运行结果却是一样的,求解!

论坛徽章:
0
2 [报告]
发表于 2011-11-03 16:17 |只看该作者
意思是建议在for语句中声明变量 像这样 int count = 1

论坛徽章:
0
3 [报告]
发表于 2011-11-03 16:39 |只看该作者
该变量是循环的本地变量。循环结束后他就不存在了。所以不能在循环结束后输出它的值。这句话是什么意思?

论坛徽章:
0
4 [报告]
发表于 2011-11-03 16:50 |只看该作者
不知道你看的什麼書,能出來本地變量,我就已經看到很開心了。哈哈哈哈 笑死我了


對你想說的只有,孩子先學基礎吧,有了基礎再繼續學

论坛徽章:
0
5 [报告]
发表于 2011-11-03 16:56 |只看该作者
本帖最后由 坐在地平线 于 2011-11-03 16:58 编辑

回复 4# zcheung
我看的是c语言入门经典(第四版),我现在就是学的基础,书上也不能面面俱到吧,所以就上网看看了。不知道这位大哥有什么建议?小弟洗耳恭听!
我说说我不明白的问题,不知道有什么好笑的,请指教!

论坛徽章:
0
6 [报告]
发表于 2011-11-03 17:04 |只看该作者
回复 5# 坐在地平线


    我笑的不是你, 而是此書的翻譯(如原是外國的)。  呵呵
  

    別的 沒什麼想對你說的, 自己看著來吧。

论坛徽章:
0
7 [报告]
发表于 2011-11-03 17:09 |只看该作者
回复 6# zcheung
哦,那还是得谢谢了,我以后得注意点翻译方面的问题。我的英语水平现在不好,要不我直接看原版了

论坛徽章:
0
8 [报告]
发表于 2011-11-03 17:13 |只看该作者
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         for(int count = 1;count <= 10; ++count)
  5.         {
  6.                 printf("%d\t",count);
  7.                printf("we have finished\n");
  8.          }
  9.          printf("%d",count);
  10.         return 0;
  11. }
复制代码
第二段和这个等价,加个大括号就可以了~~~

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2011-11-03 17:21 |只看该作者
蓝色的句子我明白,但是红色的我就弄不懂了。照这样说,上面两段代码输出结果应该有所不同,但是实际的运行结果却是一样的,求解!
坐在地平线 发表于 2011-11-03 16:08



    你用的啥编译器?第二段代码 gcc 根本就编译不过去。

论坛徽章:
0
10 [报告]
发表于 2011-11-03 17:22 |只看该作者
我不知道你是在什么环境下用什么编译器编译的,总之我在linux下用gcc编译器编译第二个程序时出错
[root@Fedora14New for]# gcc -c for.c -o for -std=gnu99
for.c: 在函数‘main’中:
for.c:7:29: 错误:‘count’未声明(在此函数内第一次使用)
for.c:7:29: 附注:每个未声明的标识符在其出现的函数内只报告一次

意思就是count这个变量没有声明,也就是说count这个变量只能在for循环里面使用,出了for循环之后就不能再使用了,就算你的编译器没有检查这个,出了for循环再使用count也是很危险的,要避免这么做
之所以c99标准可以这么做,应该就是为了方便程序的编写,但是新手的话不要在这些问题上纠结,知道有这么回事就可以了,就算现在不明白也没事,可以先用比较安全,不容易引起歧义和误会的方式实现就好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP