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

摘要:
我记得(starting语句;判断语句;correction语句){loop语句;}我以前对for循环的理解是,当执行for循环时,首先执行start语句,然后执行循环体(loop语句),然后执行修改后的语句,然后建立判断语句,然后是循环语句→ 修改后的报表→ 判断语句被执行…然而,根据P19中的介绍和实验,似乎仍有一些事情需要注意,即这种书写方法:for(int i=0;i<100;i++);也就是说,循环变量i在f中

想起了以前的一个知识点

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

免责声明:文章转载自《【看书】for循环中的定义变量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何保住一个人一生的劳动果实solr的配置文件及其含义下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL和MSSQl使用While 语句循环生成测试数据

在MySQL中,使用While语句循环与SQL Server中有所不同,代码测试通过。 MSSQL中使用while语句循环生成数据的方法: 示例代码: declare @a int set @a = 1 while @a<25 begin INSERT INTO demotable (id,item1,item2) V...

批处理脚本

常用dos命令 批处理复制文件(文件夹) 1.复制C:ae.txt 文本文件到d:文件夹下面【复制完的目录结构应该为d:e.txt】xcopy /y c:ae.txt d: >nul2.复制C:a文件夹及其内所有东西(包括隐藏,系统文件)到D:文件夹下面【 a文件夹也要复制过去,也就是说,复制之后,a文件夹应该在b文件夹下】xcopy /y /e...

for循环中的闭包

1.代码 for(i=0;i<3;i++){ setTimeout(function(){ console.log(i); },0) } 输出为: 2.代码(闭包,直接执行匿名函数) for (var i = 0; i < 3; i++) { (function(x){ s...

mysql 循环批量建表(表结构相同,表名可以自定义)

1.情景展示 现在有这样一种需求: 我需要建两百多张表,这些表的表结构相同,表的名称也是提前拟定好的,必须使用指定的表名; 如果使用一个个写SQL语句,那不还得累死,所以,我想到了可不可以通过批量建表来实现? 2.原因分析 既然是只有表名不同,那我们只需要写好建表语句,中间的表名使用动态赋值的方式,for循环执行就可以了。 这就涉及到如何取值的问题?...

lua for循环

《转自网络,仅供学习》 for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。 语法 Lua编程语言的for循环的语法是: for init,max/min value, increment do statement(s) end 下面是控制在一个循环的流程: 初始化步骤首先被执行,并且仅一次。这个步骤可让您声明和初始化任何循环控制...

shell脚本系列:两种风格的for循环

C语言风格 格式 for((exp1; exp2; exp3)) do statements done 示例 #!/bin/bash sum=0 for ((i=1; i<=100; i++)) do ((sum += i)) done echo "The sum is: $sum" 修改“从 1 加到 100 的和”的代码...