设j为int型变量,则下面for循环语句的执行结果是______________

for(j=10;j>3;j--){if(j%3)j--;--j;--j;printf("%d",j);}答案是:7、4(我好像转入了牛角尖,麻烦高人解救:j--到底是如... for(j=10;j>3;j--)
{
if (j%3) j--;
--j;
--j;
printf("%d",j);
}

答案是:7、4
(我好像转入了牛角尖,麻烦高人解救:j--到底是如何运算的。详解!)

第一个j--,j先取出来也就是10,然后再自减1,就等于9。那么第2个j--是,j是等于先取出来的10,还是,真正自减运算后的9呢?这个始终搞晕~
展开
 我来答
百度网友8bf789d05
2011-04-06 · TA获得超过653个赞
知道答主
回答量:13
采纳率:0%
帮助的人:17.2万
展开全部
for(j=10;j>3;j--)
{
if (j%3) j--; //这句话是:只要j%3不等于0,j就减1
--j; //这句话是j减1
--j; //这句话是j减1

printf("%d",j); //输出j
}
首先,j=10;因为 j%3不等于0 ,所以执行if内的语句,j-1,此刻j=9;再往后,有两次j-1,于是j=7;然后输出
再然后,执行for语句内的j--,此刻j=6;
再进入循环。因为j%3等于0,所以不执行if内的语句,j依然等于6;然后两次j-1;j=4.然后输出4.

我觉得这个题目j--或则--j都可以互换,答案都一样。
主要是你没有理解if(j%3)的意思。。。
溟哀
2011-04-04
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
是9,在第一个j--,j先取出来也就是10,然后再自减1,就等于9,然后两个j--,等于7。.接着for循环中,j--,j为6,j%3为0,不进入if后的j--,接着两个--j,j为4,printf输出,再for循环的j--,就为3,不满足j>3,退出循环。主要是这个j--在表达式里有先后,单独的一个语句(;)就没什么关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
r_ger
2011-04-05
知道答主
回答量:9
采纳率:0%
帮助的人:1.5万
展开全部
j--即用完j之后减一,首先j=10;if语句用j一次,即此后j=9,然后j减两次得7.第二次就是一样的方法了。其实你可以将printf语句分别放在各个语句后运行一下,j--的作用就出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shitoushiyuan
2011-04-04 · TA获得超过113个赞
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:82.4万
展开全部
j--;遇到分号本次运算结束,j更新为9,以此类推,第一次循环体内j更新为7
第二次进去是6!不是7,所以自减两次,懂了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式