黑马程序员技术交流社区

标题: 求教各位大神,在循环外创建变量循环内创建变量,不同... [打印本页]

作者: msm1374    时间: 2015-9-18 21:22
标题: 求教各位大神,在循环外创建变量循环内创建变量,不同...
求教各位大神,在循环外创建变量循环内创建变量,不同点在哪里?
for  (int i=0; i<3; i++) {
          int   i = 1;
          printf("哈哈")
}



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


作者: 苏子瞻201068    时间: 2015-9-19 09:54
第一个是个死循环的会报错的,如果你是想问循环外创建变量循环内创建变量不同的话,首先内部循环变量只能在循环内使用,第二是执行效率的问题,内部循环每次都要创建变量所以会需要更多的时间。内部循环中每次创建变量的时候地址也是不一样的。
作者: 陆露    时间: 2015-9-19 10:39
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次在回来问
作者: 安若曦    时间: 2015-9-19 11:57
陆露 发表于 2015-9-19 10:39
for  (int i=0; i

你这个太搞笑了
作者: zzx0826    时间: 2015-9-19 13:07
3楼,牛气
作者: 陆露    时间: 2015-9-19 13:23
安若曦 发表于 2015-9-19 11:57
你这个太搞笑了

那个是摘抄楼主的 没看楼主的写的?
作者: msm1374    时间: 2015-9-19 17:45
陆露 发表于 2015-9-19 10:39
for  (int i=0; i

很不错的解释,但是我还想问,为什么   i在这个部位不会根据循环增加次数  ??
作者: lumangmang    时间: 2015-9-19 19:27
第一种情况每次都会初始化i的值  程序陷入死循环
作者: 陆露    时间: 2015-9-19 19:44
你要了解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 也就不存在了 被回收了
作者: lixj1991    时间: 2015-9-19 20:00
在循环体内部i被重新定义和赋值,估计回报错吧,因为i已经在循环体里了。
作者: msm1374    时间: 2015-9-20 19:36
陆露 发表于 2015-9-19 19:44
你要了解for循环的格式和作用
for循环使用来干什么的
for(int i = 0; i

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

没报错,有警告,而且运行后结果不是死循环




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