【看书】for循环中的定义变量

想起了以前的一个知识点

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循环中定义变量的后续讨论

原文地址:https://www.cnblogs.com/BoilTask/p/12569937.html