zoukankan      html  css  js  c++  java
  • 【看书】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循环中定义变量的后续讨论

  • 相关阅读:
    java 无符号byte转换
    MySQL分区总结
    eclipse @override注解出错
    git 利用hook 实现服务器自动更新代码
    Centos 安装mysql
    Centos Python3安装共存
    chromedriver 代理设置(账号密码)
    PyQt5整体介绍
    python图片云
    PyPt5 浏览器实例
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569937.html
Copyright © 2011-2022 走看看