这道题的难点是:&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式。
所以for(i = 0i <6i++ &&k++)循环的执行顺序:
当i=0的时候,第一次进入for循环,for语句执行到i = 0i <6结束,并不执行i++ &&k++,当第一次循环结束后i=0,k=0。
进行第二次循环for语句执行 i <6i++ &&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类型的时候,&表示按位 *** 作。
参考资料:“与”运算-百度百科
运算符优先级
循环嵌套,先执行for(c=1c<=nc++)这个循环,再执行for(b=1b<羡散备nb++),兄毁最后执行for(a=1a<na++)比如:for(a=1a<20a++)
for(b=1b<20;b++)
for(c=1c<=20c++)
if(a+b+c==100)break
第一个判断的是a=1,b=1,c=1是否等于100
第二个判断的是a=1,b=1,c=2是否等掘配于100,
直到c为20,b+1然后判断a=1,b=2,c=1是否等于100,
接着a=1,b=2,c=2是否等于100
...
剩下的同理
首先纠正一下,for是C语言中的循环控制语句,不是函数。通常,一个for语句的格式为: for(初始化条件判断 *** 作){}程序在首次执行for语句的时候,会先运行竖纤初始化部分,注意,初始化部分只运行一次。接着进行条件判断。条件判断部分是余激仿一个表达式,该表达式返回一个布尔值,如果为真,则运行后面花括号中的语句,然后运行for中的 *** 作部分(通常是一个变量的步增和歩减);这样就完成了一次循环。接下来运行第二次循环,不再进行初始化,直接从条件判断开始,如果为真,则继续刚才的过程,如果为假,则跳出for循环。铅歼例如: for(int i = 10i >0i -= 3) printf("i = %d\n",i)这段语句的输出为: i = 10 i = 7 i = 4 i = 1 该语句第一次执行时,先进行初始化,此时i=10,接着进行条件判断,i>0为真,则输出“i=10”,然后对i减3;第二次循环时,i=7,从条件判断i>0开始,7>0为真,则输出“i=7”,再对i减3;第三次循环输出“i=4”;第四次循环输出“i=1”之后对i减3,此时i=-2,当再次进行条件判断的时候,-2>0为假,此时跳出for循环。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)