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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求教各位大神,在循环外创建变量循环内创建变量,不同点在哪里?
for  (int i=0; i<3; i++) {
          int   i = 1;
          printf("哈哈")
}



int  i=1;
for  (int i=0; i<3; i++) {
     printf("哈哈")
}

15 个回复

倒序浏览
第一个是个死循环的会报错的,如果你是想问循环外创建变量循环内创建变量不同的话,首先内部循环变量只能在循环内使用,第二是执行效率的问题,内部循环每次都要创建变量所以会需要更多的时间。内部循环中每次创建变量的时候地址也是不一样的。
回复 使用道具 举报
for  (int i=0; i<5; i++) {
          int   i = 1;//重新定义i变量 i在这个部位不会根据循环增加次数
          printf("早晨起床撸了%d发");
}
早晨起床撸了1发
早晨起床撸了1发
早晨起床撸了1发
早晨起床撸了1发
早晨起床撸了1发
int i = 1
for  ( i=0; i<5; i++) {
     
          printf("早晨起床撸了%d发");
}
早晨起床撸了1发
早晨起床撸了2发
早晨起床撸了3发
早晨起床撸了4发
早晨起床撸了5发
莉莉周问你一共撸了几次
NSLog(@"我一共撸了%d次",i);
我一共撸了5次
如果还看不懂,先去撸够5次在回来问
回复 使用道具 举报

你这个太搞笑了
回复 使用道具 举报
zzx0826 来自手机 中级黑马 2015-9-19 13:07:52
报纸
3楼,牛气
回复 使用道具 举报

那个是摘抄楼主的 没看楼主的写的?
回复 使用道具 举报

很不错的解释,但是我还想问,为什么   i在这个部位不会根据循环增加次数  ??
回复 使用道具 举报
第一种情况每次都会初始化i的值  程序陷入死循环
回复 使用道具 举报
陆露 中级黑马 2015-9-19 19:44:29
9#
你要了解for循环的格式和作用
for循环使用来干什么的
for(int i = 0; i <5 ; i++)
i = 0   i < 5  i++ 分解开来是这样的
i < 5 是用来判断循环次数 现在是0 小于 5 那么成立 就可以进入下一个环节
下一个环节是什么呢?是i++  这里就等于 i += 1 也就是 i= i+1  就是  i  = 0 + 1; 那么现在i = 1 了
然后执行下面大括号里的内容 这算完成了一次 循环 重点是 i ++
你要明白 他时来衡量循环多少次的  每循环1次 他就会+ 1
直到 他不小于5 这个循环才能结束
换个通俗点的讲法来应该是这样的
体育老师 让你围着操场跑5圈,但是他不相信你 他需要找一个同学帮你数圈数 当你刚开始跑的时候 是0 圈吧
就代表i= 0  
然后帮你数圈圈的同学他必须数到5圈你才能停止 那她 i < 5 是用来判断你此时跑没跑到5圈
当你跑完1圈之后 他会帮你 +1  这里也就等于 i++;
然后那个同学就会判断一下 到没到5圈,这里就用到 i < 5 来判断了
结果 1  <  5 你只跑了一圈, 1 肯定 小于5 那你还的继续跑
又跑完1圈 同学又帮你+ 1 圈 i++  = 2圈了
他再判断 2 < 5  那你还的跑, 直到  i 不小于5了 你就能停止跑步了

还有你要了解 变量的作用域  
你在{ int i = 0  };那么他的作用就只能在大括号里  如果大括号运行完了 大括号内部的 局部变量i 也就不存在了 被回收了
回复 使用道具 举报 1 0
在循环体内部i被重新定义和赋值,估计回报错吧,因为i已经在循环体里了。
回复 使用道具 举报
陆露 发表于 2015-9-19 19:44
你要了解for循环的格式和作用
for循环使用来干什么的
for(int i = 0; i

问题是  循环里面创建 变量i ,不会跟括号的起冲突
回复 使用道具 举报
生命周期不同
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
当然是不一样的,你在循环内部定义int i在循环外是访问不到的,而且在定义i的语句之后使用i,i的值始终为for循环内部定义的i
但是由于你在循环外部定义i而循环使用的变量也是i,只能在for循环定义i的语句之后但非for循环之内只用i,循环内访问i的话只能访问到for循环中条件判断中的i。。。感觉说的好乱。。。
回复 使用道具 举报
lixj1991 发表于 2015-9-19 20:00
在循环体内部i被重新定义和赋值,估计回报错吧,因为i已经在循环体里了。 ...

没报错,有警告,而且运行后结果不是死循环
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马