C++代码的运行结果分析,求大神

 我来答
在晴天的雨伞
2016-05-31 · TA获得超过6869个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1237万
展开全部
# include <stdio.h>
int main(){
int i,j,k=0;
for(i=1;i<=5;i++){
j=i%2;
while(j-- == 0)
k++;
}
printf("%d,%d",k,j);
return 0;
}

编译可通过,修改了while(j-- == 0)
运行结果是k = 2 , j = 0;
把 这句5改成6 for(i=1;i<=6;i++) 结果是3,-2
第一轮循环过后:i=1,j=1 ->while 后 k=0,j=0
第二轮循环过后:i=2,j=0 ->while 后 k=1,j=-2
第三轮循环过后:i=3,j=1 ->while 后 k=1,j=0
第四轮循环过后:i=4,j=0 ->while 后 k=2,j=-2
第五轮循环过后:i=5,j=1 ->while 后 k=2,j=0
如果有六的话是:i=6,j=0 ->while 后 k=3,j=-2
j会等于-2是因为当j=0是while符合条件进入k++,同时执行j--,j变成-1,再回来判断while此时不符合条件跳出while但是同时还是要执行一次j--,所以变成-2.
j--和--j的区别是一个是用未减一的值运行完当前语句再减一,一个是减完一再用新值去运行当前语句
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式