c语言for嵌套while循环为啥输出是10

#include "stdio.h"
main()
{
int i,j,k=0;
for(i=10,j=9;i<13;i++)
while(j++<i)k+=j;
printf("%d\n",k);
}

 

初始i=10,j=9

第一次判断j++<i。j++是先比较再加1, 是9<10为真 j++后是10,执行 k+=j; k是10

第二次判断j++<i时。 是10<10为假 j++后是11,不执行 k+=j;

之后执行for循环中的i++,i变成11

第三次判断j++<i时。 是11<11也是假 j++后是12,不执行 k+=j;

 

这样第一次之后都不执行 k+=j;了

 

while(j++<i)k+=j;

这个while循环,循环一次后,j=10,k=10,而i是越来越小,再也进不了循环了,所以最后结果就是10

for循环第一次走到while循环第一次真k赋值10 while第二次循环为假为什么直接跳出for循环 输出 

while(j++<i)k+=j;

这个while循环,循环一次后,j=10,k=10,而i是越来越小,再也进不了循环了,所以最后结果就是10

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

这种问题,单步F10看一下各个变量的值应该就很清楚了吧~

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y