for循环执行顺序

c代码

main()

{

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

}

执行后的结果是这样的:

0 0 1 0 2 1 3 2 4 3 5 4
0 0 1 1 2 2 3 3 4 4 5 5Press any key to continue;

求解释.

这道题的难点是:&&的短路功能,当第一个表达式的值为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类型的时候,&表示按位操作。

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

运算符优先级

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-24

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循环

本回答被网友采纳
第2个回答  2009-07-28
看了半天 才明白过来
下面的那个循环我就不说了 相信你能看明白
我讲讲上面的循环
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++试试看结果
用这个方法分析就可以了
不过我在调试过程中遇懂啊了一个问题
就是调试与直接执行的结果不一样
希望下面有高手能够解答
第3个回答  推荐于2017-10-15
程序重点位置就是 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的结果不同,问题我没有发现,不知道楼上使用的是什么编译器环境?本回答被提问者采纳
第4个回答  2018-08-04
外面的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
开始本回答被网友采纳

for循环执行顺序?
两个for循环执行顺序如下:1、外层判断循环条件,满足进入外层循环体。2、内层判断循环条件。3、内层循环体执行。4、内层循环变量累加,回到2执行,直到不满足内层条件。5、外层循环变量累加,回到1执行,直到不满足外层循环条件,彻底退出循环。

for循环执行顺序?
For循环的执行顺序通常遵循以下步骤:1. 初始化循环变量。2. 检查循环条件是否满足。3. 执行循环体中的代码。4. 更新循环变量。5. 返回步骤2,直到循环条件不满足为止。二、详细解释 1. 初始化循环变量:在循环开始之前,需要为循环变量赋初值。这个步骤只会在循环开始时执行一次。2. 检查循环条件:...

for循环执行顺序
1、执行for后表达式1。2、执行表达式2,若表达式2的值为真(或非0),则执行for内循环体,然后执行。3、否则,则循环结束,执行(5)(3)执行表达式3。4、返回继续执行(2)(5)循环结束,执行for语句的循环体下面的语句。

for 语句执行顺序
for语句执行过程如下:①先对表达式1赋初值;②判别表达式2是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行表达式3,进入第二次循环,再判别表达式2……;否则判断表达式2的值为假,不满足条件,就终止for循环,执行循环体外语句。for语句语法流程如下图所示:例题:include main...

for循环的条件与循环体的执行顺序.
1、执行for循环体里的第一个参数,也就是定义一个int整形变量,其变量名为i,并初始化为0。2、 执行完第一个参数里的代码后,会执行第二个参数,判断i是否小于99。3、当第二个表达式为True时会去执行循环体里的代码,也就是当i不等于99的时候。4、执行完循环体里的代码后,就会去执行for循环的...

for循环执行顺序
所以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,为...

for循环执行顺序
在Python中,for循环的执行顺序如下:1、从可迭代对象中获取第一个元素,将其赋值给循环变量。2、执行循环体语句,对循环变量进行操作或输出。3、继续从可迭代对象中获取下一个元素,再次执行循环体语句。4、重复执行上述操作,直到可迭代对象中的所有元素都被访问和操作。5、如果可迭代对象中的元素被...

for循环的条件与循环体的执行顺序.
for循环中除了表达式1为了初始化变量,其的循环是表达式2——循环体——表达式3——表达式2这样的循环。对条件变量进行初始化,赋值(只会执行一次);判断循环条件,满足则执行循环体,不满足则不执行;若执行了循环体,执行完毕之后回到for关键字后面的小括号,执行迭代操作;重复第2、3步,直至循环条件...

for循环执行顺序?
对于for循环的执行顺序,我们可以将其概括为以下步骤:首先,程序会检查外层循环的条件表达式,如果条件为真,就会进入外层循环体。接着,程序会执行内层循环,其条件同样会被检查,如果满足,就会执行内层循环体。在内层循环中,循环变量会逐次累加,然后再次检查其条件,直到不满足条件,内层循环结束。完成...

c语言中 for(i=0;n;n=n\/10,i++) 这个循环的该怎么理解?
首先要明白for语句的执行顺序 for语句的原型是for(;;)第一个分号之前作为初始化,只执行一次,在最前面执行。第二个分号和第一个分号之间是条件判断,每次判断是“真”才会继续进行循环,执行顺序排在第二。第二个分号之后的地方是循环一次之后最后执行的部分。上面这句拆开来执行顺序就是:第一次初始...

相似回答