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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dormitory219 中级黑马   /  2015-1-9 19:53  /  1421 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才看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++编译器的原因么??

4 个回复

倒序浏览
在for 循环中进行行循环,最后一次循环后e的值自加后变为3,最后你让printf打印出e的值,这时内存中记忆e的值正是3,在正常没有语法错误情况下,编译器是不会报错的
回复 使用道具 举报
macau 发表于 2015-1-9 20:04
在for 循环中进行行循环,最后一次循环后e的值自加后变为3,最后你让printf打印出e的值,这时内存中记忆e的 ...

你再看一下,我这个e是在for中定义的,我刚才看了视频,在xcode环境下最后printf的e是未被定义的
回复 使用道具 举报
你把变量的声明放在for循环头部,那这个变量到for循环的最后一个括号就不能访问了,在其之后访问肯定有问题的
回复 使用道具 举报
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。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马