想起了以前的一个知识点
for(起始语句;判断语句;修正语句){
循环语句;
}
对于for循环我以前的理解是这样的
执行到for循环时
先执行一次 起始语句
然后开始执行循环体(循环语句)
执行后执行 修正语句
然后判断 判断语句
成立则继续执行 循环语句→修正语句→判断语句……
但通过P19中的介绍以及实验
发现似乎还有一些需要注意的地方
也就是这种写法:
for(int i=0; i<100; i++);
也就是循环变量i是在for语句时才建立的
按照之前
执行到for循环时
先执行一次 起始语句
理解 这个i应该和这种用法:
int i;
for(i=0; i<100; i++);
是一样的
但探究之后发现并不一样
参考如下语句
#include<stdio.h>
int main() {
// int i;
for(int i=0; i<20; i++)
printf("%d ",i);
printf("\n%d",i);
return 0;
}
当编译时会报错
也就是for循环结束之后
i变得无法调用了
而for之前的那条注释语句加上的话
发现执行结果如下:
可见循环中的 int i 并没有影响循环外的 int i
所以可见这个for循环中的i是独立的
这样的话 既然独立 那么随用随定义应该是好过直接先定义的
以前我在这种的时候是习惯把正常的变量与循环变量分开区分的
如
int n,m,x,y; //储存数值的变量
int i,j,k; //记录循环次数的变量
而了解到这一特性之后
可以轻松地在运用for时再定义这些变量 而不影响其它部分
在P19有这样一句话
提示2-4 建议尽量缩短变量的定义范围。例如,在for循环的初始化部分定义循环变量。
我也是深感很有道理啊~
话说这就是共鸣哎~毕竟每个人的习惯还是不一样的 能和大神的观点一致 还是有点小激动的呢
《算法竞赛入门经典(第2版)》P19
以上发表于:
【看书】for循环中的定义变量(2016-01-04 17:11) 11 0
20160112 附:
后续文章:【看书】关于for循环中定义变量的后续讨论