问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

for循环执行顺序

发布网友 发布时间:2022-04-24 02:16

我来回答

9个回答

懂视网 时间:2022-05-18 03:15

引发这个问题思考的是一段js程序的运行结果:
代码如下:
var i = 0;
function a(){
for(i=0;i<20;i++){
}
}
function b(){
for(i=0;i<3;i++){
a();
}
return i;
}
var Result = b();

这段程序的运行结果是Result = 21;

从这段程序中我们可以看出,i在a函数返回的时候值是20这是没有问题的。
而在b函数返回的时候,i的值是20还是21就值得讨论了。
问题的本质即:先进行了判断i<3,还是先进行了i++,再判断是否i<3.

根据执行的结果可以看出,是先执行了i++的。
代码如下:
function a(){
for(i=0;i<20;i++){
// 没有 var i
//这里的i就是全局变量所有人可以访问
}
}
function b(){
for(i=0;i<3;i++){
//alert(i);//同理这里的i也是全局变量,返回0且只有一次返回
a();//这个函数返回是i=20
//当i=20 经过 i++后 i=21 那么就不符合i<3的条件,直接退出。所以return i=21 这很正常!
}
return i;
}
var Result = b();

在此我们补完for循环的执行顺序:
以下面程序为例
代码如下:
for(int i=0;i<10;i++)
{
}

首先执行i=0;i<10; 然后执行第一轮循环体
然后执行:i++,i<10; 然后执行第二轮循环体
直到最后一次 i++后 i >=10,此时循环结束。



语句 1 在循环(代码块)开始前执行

语句 2 定义运行循环(代码块)的条件

语句 3 在循环(代码块)已被执行之后执行

热心网友 时间:2022-05-18 00:23

这道题的难点是:&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式。

所以for(i = 0; i < 6; i++ && k++)循环的执行顺序:

当i=0的时候,第一次进入for循环,for语句执行到i = 0; i < 6;结束,并不执行i++ && k++,当第一次循环结束后i=0,k=0。 

进行第二次循环for语句执行 i < 6; i++ && k++。并先执行i++ && k++。这个时候i=0,为false,所以就不执行右边即k++。由此第二次循环后i=1,由于k++没有执行,所以k还是=0。 

进入第三次循环,i=1。&&必须要通过计算右边的表达式才能得出结果。所以开始执行k++。所以第三次循环 时候 i=2,k=1 。以此类推,一直循环到i=6条件不成立停止循环。

扩展资料:

基本的优先级需要记住:

指针最优,单目运算优于双目运算。如正负号。

先算术运算,后移位运算,最后位运算,逻辑运算最后计算。请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7。

Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。

&可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作。

参考资料:“与”运算-百度百科

运算符优先级

热心网友 时间:2022-05-18 01:41

for循环的执行顺序用如下表达式:

<span style="font-family: 

'WenQuanYi Micro Hei Mono', 

'WenQuanYi Micro Hei',

'Microsoft Yahei Mono', 

'Microsoft Yahei', 

sans-serif;">for(expression1;expression2;expression3)
{
expression4;
}
</span>

执行的顺序应该是:
1.第一次循环,即初始化循环。
首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。

2.第N(N&gt;=2)次循环

首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执。

行expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足expression2条件是为止。

<strong>总结:</strong>
总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复......区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),   后续的判断对象为执行后的结果(expression3)。


拓展资料

注意事项:

1.for循环中的变量可以是一个也可以是多个,不要局限于一个变量处理到底,那样有时会很单调,当程序适合把多个变量组成循环时,用多个for语句来表示就是有些浪费了!

2.for循环中语句可以为语句体, 语句体外加大括号"{}"将参加循环的语句括起来。 for循环的三个表达式都是逗号表达式,这样来说,其实每个分号表达式可以由几个逗号表达式构成,中间用",”隔开,最后以“;”结束。

3. for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以缺省成只剩下“;”的空语句, ";"不能缺省的原因是编译格式如此,缺省了编译器不认识而会报错。

省略了用来初始化的单次表达式时, 表示不对循环控制变量赋初值。

省略了条件表达式, 若不做其它处理则成为死循环。

省略了所有循环体, 则for语句不被其它形式处理时不产生任何作用。

百度百科for循环

热心网友 时间:2022-05-18 03:16

看了半天 才明白过来
下面的那个循环我就不说了 相信你能看明白
我讲讲上面的循环
for(i = 0; i < 6; i++ && k++)
printf("%2d%2d", i, k);
第一次循环 i=0 k=0
直接输出 毫无争议
之后执行 i++&&k++
这里要提到编译器执行这种判断性的语句的方式
比如
int i=0;
if(i==1&&k++)//由于前面的判断已经为假 与操作1假结果就是假的 不成立的 所以后面的j++就不去执行了
这里的情况也类似 i这时等于0 先进行判断 再进行++运算 由于i=0所以编译器直接认为后面的不需要继续操作了 所以 k++没有执行
到下面 判断i<6 成立 输出 i=1 j=0
再执行i++&&j++
这个时候 i=1 编译器认为大于0的数字均为真
所以前面判断为真 就要判断后面的 继而执行了j++ 程序继续判断i<6成立 输出i=2 j=1
就这样下去 输出所有的结果
你也可以吧 i++&&j++ 换为i++||j++试试看结果
用这个方法分析就可以了
不过我在调试过程中遇懂啊了一个问题
就是调试与直接执行的结果不一样
希望下面有高手能够解答

热心网友 时间:2022-05-18 05:07

程序重点位置就是 for(i = 0; i < 6; i++ && k++)里面的,i++ && k++,由于一般的编译器,对于逻辑运算符 的处理,按照从左之右,并且如果左面的表达式就可以得到最终的结果,那右边的就不执行了。
所以,本程序中。i++,先运行 i的 && 然后再执行i自加1。

当i=0的时候,第一次进入for循环,for语句执行到i = 0; i < 6;结束,并不执行i++ && k++,当第一次循环结束后i=0,k=0。

进行第二次循环for语句执行 i < 6; i++ && k++。并先执行i++ && k++。这个时候i=0,&&不需要右边的表达式已经可以知道结果,所以就不执行k++。由此第二次循环后i=1,由于k++没有执行,所以k还是=0。

进入第三次循环,i=1。&&必须要通过计算右边的表达式才能得出结果。所以开始执行k++。所以第三次循环 时候 i=2,k=1

调试与直接运行EXE的结果不同,问题我没有发现,不知道楼上使用的是什么编译器环境?

热心网友 时间:2022-05-18 07:15

外面的for循环和单循环一样,外面的for循环一次,里面的for循环跑完
for(int i =; i <2;i++){
for(int j =0;j<3;j++){
//TODO
}
}
i=0时,外面的循环1次,然后内部j从0开始,执行3次
然后i++, i=1 ;再次进入内部循环,j还是从0
开始

热心网友 时间:2022-05-18 09:40

我看主要是这句难以理解,我给你解释一下:
for(i = 0; i < 6; i++ && k++)
printf("%2d%2d", i, k);
短这里涉及到c的一个语法:段路径求值(应该是叫这个)。
表达式&&的计算顺序是从左到右,所以当第一次进行&&运算的时候i++的值为0,则此时整个表达式的值则为假,c语言不会再继续进行k++的运算。第二次运行&&的时候,i++的返回值是真,则c++继续运行k++。

热心网友 时间:2022-05-18 12:21

for(i = 0; i < 6; i++)
{
printf("%2d%2d", i, k);
k++;
这句来说
首先赋值 再比大小 i<6 则执行printf("%2d%2d", i, k);
k++; 最后执行i++

热心网友 时间:2022-05-18 15:19

for(i = 0; i < 6; i++ && k++)
printf("%2d%2d", i, k);
for(i = 0; i < 6; i++)
{
printf("%2d%2d", i, k);
k++;

我觉得,你的for循环中令i=0,那么每次执行for循环的时候i都会被重新值0,那么你的for循环应该是一个死循环,
k到值应该会输出无限个,而i 的值始终为0,而且永远不会执行到第二个循环去,你的结果是怎么得出来的?。
学习学习
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
体育运动员谁最有钱? 曲轴箱通风管漏气 有什么现象 曲轴箱强制通风管漏气? 曲轴箱(曲轴箱通风管坏了有什么影响) 100分求CS PING的问题 枇杷有什么作用与功效与作用 枇杷的功效和作用 三星手机大全5660三星手机大全所有型号图片 三星s5660能用动感地带152号段的卡上wlan吗? 我的三星S5660插移动卡就会显示只能进行紧急呼叫,用联通卡没问题,把卡... for, while,do-while循环语句的各个特点? for循环执行顺序? 程序开发中for循环的注意事项及原理? for循环怎么写? laptop为什么是笔记本电脑的意思?top在这里什么意思? laptop 是什么电脑呢? laptop的意思是什么 显卡“laptop”和“m”的性能有哪些不同? Surface Laptop商用版体验如何 如何评价微软的 Surface Laptop laptop中文是什么意思 LAPTOP是什么 laptop和workstation的优缺点? 微软surface laptop超轻薄触控笔记本怎么样 Laptop笔记本怎么样 详细配置参数公开 laptop是什么意思 Laptop3性能怎么样,适合入手吗? surface laptop 怎么样 微软Surface Laptop怎么样 地球第一个人类出现的时候是怎么繁衍后代的? 关于for循环 有人知道用for循环怎么做吗 FOR循环有什么用 有哪些经典怀旧校园歌曲? 好听的校园歌曲都有什么? 有什么好听的校园歌曲 有哪些好听的校园歌曲 校园回忆青春的经典歌曲有哪些 有哪些好听的校园歌曲? 甘肃非物质文化遗产有哪些? 上世纪80年代90年代经典的校园歌曲有哪些? 甘肃省被列入非物质文化遗产名录的有那些 有哪些校园歌曲和经典老歌?(不少于20首) 甘肃省首批入选世界非物质文化遗产的是什么? 我需要一些和校园有关的校园歌曲 甘肃省省级非物质文化遗产名录的非物质文化遗产 校园歌曲有哪些? 要经典的,好听的,越快越好!! 推荐几首好听的经典校园歌曲 第一批国家级非物质文化遗产名录的曲 艺(共计46项) 临夏民族民俗文化产业园什么时间建成