for循环的执行顺序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for循环的执行顺序?相关的知识,希望对你有一定的参考价值。

在高级语言,脚本语言中循环语句的使用可带来简便高效的效率。for是一个使用率较高的一种循环语句。小编就用js给大家详细讲述for循环语句的执行的顺序。

开启分步阅读模式
工具材料:
js脚本语言

文本编辑器(如超级记事本),浏览器

操作方法
01
首先打开,记本本,输入以下内容.
<script>
for(var i=0;i<5;i++)

document.write("this is for test<br> ");

</script>
保存成html格式的文件。用浏览器打开,查看执行后的结果。

02
输出结果是打印出了5行this is for test。
那么这个是什么工作原理呢?也就是它是什么样的顺序执行出这个结果的呢?
首先从for这个语句中的这些内容分别代表什么意思呢?先看看小括号中的内容,其中var i=0这是声明一个变量并赋值,这是for语句首先且只运行一次的部分。要注意运行一次,这是关键。整个for语句中只有它是只运行一次。

03
i<5;这是条件表达式。这是进入循环执行第一步且可执行多次,也是决定控制循环次数的表达式。从顺序角度来讲声明表达式之后执行。

04
document.write("this is for test<br> ");这是循环体,执行顺序是条件表达式之后执行。且可根据条件执行多次。

05
i++;这是循环最后一个执行的部分。这里的最后,指的是单次循环中的最后。上面的例子中for语句执行了5次也就是循环了5次。每次循环的最后都是以i++结束。

06
下面图例表现for循环顺序。

特别提示
for在很多高级语言中的用法都是一样的,所以了解了js中for语句的执行顺序在其他语言中也可以通用了。
参考技术A for循环的执行顺序
这是怎么执行的

首先需要明确的一点是,for循环语句的执行顺序

先举一个简单的例子,
i<10 进行判断,如果条件为真,则继续执行

执行循环体代码

i++ 变量i自增

回到第2步,一直循环下去,直到第2步为假, 退出循环.

总结一下:

for(条件①;条件②;条件③)

循环体④



执行顺序如下:

①②④③ ②④③ ②④③... ..

然后执行第三个getchar(),得到c=3;

(此时一轮循环结束,回到for循环的条件②执行第二轮循环)

执行第二个getchar(),得到c=4
然后执行循环体输出3;

然后执行第三个getchar(),得到c=5;

(第二轮循环结束,再次回到for循环的条件②执行第三轮循环)

执行第二个getchar(),得到c=#,判断 ‘#’= '#' ,循环结束;
参考技术B 对于,for(;;) 语句的执行过程如下:

执行第 1 个分号之前的语句,然后 跳到第 2 步,如果为空,直接跳到第 2 步
判断第 2 个分号之前的语句,如果不成立,退出循环,否则跳到第 3 步,如果为空,直接跳到第 3 步
执行大括号里的语句,如果遇到 continue,直接跳到第 4 步,如果遇到 break 终止当前循环,如果为空,直接跳到第 4 步
执行第 2 个分号之后的语句,然后跳到第 2 步,如果为空,直接跳到第 2 步
举个例子说明一下:

for(int i = 0; i != 2; ++i)
for (int j = 0; j != 2; ++j)
printf("%d %d\n", i, j);
程序执行如下:

int i = 0;
判断 i != 2成立,此时,i == 0继续
int j = 0;
判断 j != 2成立,此时,j == 0继续
printf("%d %d\n", i, j);输出:0 0
++j
判断 j != 2成立,此时,j == 1继续
printf("%d %d\n", i, j);输出:0 1
++j
判断 j != 2不成立,此时,j == 2,退出第二个循环
++i
判断i != 2成立,此时,i == 1继续
int j = 0;
判断 j != 2成立,此时,j == 0继续
printf("%d %d\n", i, j);输出:1 0
++j
判断 j != 2成立,此时,j == 1继续
printf("%d %d\n", i, j);输出:1 1
++j
判断 j != 2不成立,此时,j == 2,退出第二个循环
++i
判断i != 2不成立,此时,i == 2,退出第一个循环
参考技术C h>

因为s[0]=0;a'n",所以按理说循环体应该不会被执行#include < int i;;s[i];=' &&s[i]<z'stdio,但为什么最后输出的n是2呢!=0;



printf(")

n++;i++)


if(s[i]>012xy"%d\,n), n=0;;='
for (i=0;
main()

char s[]="

为啥for 循环不执行?

#include<stdio.h>
int yesORno(int year)

if(year%4==0&&year%400!=0) return 1;
return 0;

void main ()

int day[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;
int y1,y2,m1,m2,d1,d2;
int count;
scanf("%d.%d.%d",&y1,&m1,&d1);
scanf("%d.%d.%d",&y2,&m2,&d2);
for(count=0;y1==y2&&m1==m2&&d1==d2;count++)

d1++;
if(d1>day[yesORno(y1)][m1])

d1=1;
m1++;
if(m1>12)

m1=1;
y1++;



printf("%d\n",count);

#include<stdio.h>
int yesORno(int year)

if(year%4==0&&year%100!=0||year%400==0) return 1;
return 0;

void main ()

int day[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;
int y1,y2,m1,m2,d1,d2;
int count;
scanf("%d.%d.%d",&y1,&m1,&d1);
scanf("%d.%d.%d",&y2,&m2,&d2);
for(count=0;!(y1==y2&&m1==m2&&d1==d2);count++)

d1++;
if(d1>day[yesORno(y1)][m1-1])

d1=1;
m1++;
if(m1>12)

m1=1;
y1++;



printf("%d\n",count);

改3个地方才能正确。
1.day[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;
要改成day[2][13]=0,31,28,31,30,31,30,31,31,30,31,30,31,
0,31,29,31,30,31,30,31,31,30,31,30,31;
2.if(year%4==0&&year%400!=0) return 1;要改为if(year%4==0 && year%100!=0 || year%400==0) return 1;
3.控制表达式y1==y2&&m1==m2&&d1==d2要改为y1!=y2 || m1!=m2 || d1!=d2.
参考技术A int day[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;

1、赋值错误
int day[2][12]=31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31;
2、循环条件不对
如果d1==d2,y1=y2,m1=m2,经过下面的一轮计算后,d1 和d2不相等了,自然循环不循环了
参考技术B y1==y2&&m1==m2&&d1==d2

这个条件为假时,就不执行了,

以上是关于for循环的执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章

for循环执行顺序

两个for循环执行顺序

for 语句执行顺序

for循环语句执行顺序

for循环执行顺序

两个嵌套for循环的执行顺序