C语言新手看不懂下面的for语句,m++的执行次数是两个for语句次输的乘积吗?求解答

有程序段
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf("%d\n",m);
输出结果是20.
m++的执行次数是两个for语句次输的乘积吗?
for语句的执行是:①执行表达式1;②执行表达式2,若其值非0,执行for循环,否则退出循环;③执行for循环;④ 执行表达式3,执行②;⑤退出循环
for的嵌套有什么改变了?

int i,j,m=0;
for(i=1;i<=15;i+=4){
for(j=3;j<=19;j+=4){
m++;
}
}
printf("%d\n",m);

或许写成这样你就知道了,其实这个跟你的一样

并没有什么改变,只是for的循环体里面又是一个循环体,只有里面的循环体执行完毕,才会进行下一轮的循环。追问

确实简单多了
还有一个问题,有一个for语句
for(k=2;k<6;k++,k++);
里面“k++,k++”有什么特殊意义吗?可以用“k+=2”代替吗?

追答

用两个k++,在有的编译器里面可能会达不到你想要的效果,一般情况下跟K+=2是一样的。

写程序时尽量写易懂的代码,养成一个好的习惯。

追问

谢谢解答,受益匪浅

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-26
就是输出循环次数。。。确实是乘积

更正一下第五步应该是执行表达式2

第三步,执行for的时候循环体又是一个for循环,所以会执行完里面的for,外面的for继续第四步,如果不满足退出条件,就开始下一次循环体。追问

原来如此
上面是我打错了,见怪了

第2个回答  2016-08-26
可以这么理解,因为m++语句是在变量j的for循环下的,要等j循环完在循环i,就是i=1的时候j循环5次,m++也循环5次,依次到i=15时j也循环5次,m++也是5次。所以就是4*5=20次,m++执行了20次,m就是20追问

看起来真的挺通俗易懂的

相似回答