黑马程序员技术交流社区

标题: 关于fo语句中作用域问题 [打印本页]

作者: dormitory219    时间: 2015-1-9 19:53
标题: 关于fo语句中作用域问题
刚才看c视频看到for语句,用vc 6.0++ 敲下列代码:for( int e=0;e<3;e++)  int t=12;  printf("e=%d\n",e);运行结果是e=3;在这个e不是只能在for语句中生效么,怎么编译不报错呢??难道是用了c++编译器的原因么??
作者: macau    时间: 2015-1-9 20:04
在for 循环中进行行循环,最后一次循环后e的值自加后变为3,最后你让printf打印出e的值,这时内存中记忆e的值正是3,在正常没有语法错误情况下,编译器是不会报错的
作者: dormitory219    时间: 2015-1-9 20:09
macau 发表于 2015-1-9 20:04
在for 循环中进行行循环,最后一次循环后e的值自加后变为3,最后你让printf打印出e的值,这时内存中记忆e的 ...

你再看一下,我这个e是在for中定义的,我刚才看了视频,在xcode环境下最后printf的e是未被定义的
作者: Xwoder    时间: 2015-1-10 14:54
你把变量的声明放在for循环头部,那这个变量到for循环的最后一个括号就不能访问了,在其之后访问肯定有问题的
作者: paldvel    时间: 2015-1-10 15:07
VC6.0++都什么年代的了,上个世纪的了,还是C89标准。
如果在WIN下编写C,推荐VS2010及以上,或者code::blocks,都支持C99,Xcode早就支持C11了。

  1. for( int e=0;e<3;e++)
  2.         int t=12;
  3. printf("e=%d\n",e);
复制代码

上面的代码在Xcode会报2个错,一个是int t没有被大括号括起来;一个是printf()里用到了未声明的变量e。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2