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);
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循环的执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章