设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呢?这个始终搞晕~ 展开
{
if (j%3) j--;
--j;
--j;
printf("%d",j);
}
答案是:7、4
(我好像转入了牛角尖,麻烦高人解救:j--到底是如何运算的。详解!)
第一个j--,j先取出来也就是10,然后再自减1,就等于9。那么第2个j--是,j是等于先取出来的10,还是,真正自减运算后的9呢?这个始终搞晕~ 展开
4个回答
展开全部
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)的意思。。。
{
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)的意思。。。
展开全部
是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--在表达式里有先后,单独的一个语句(;)就没什么关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j--即用完j之后减一,首先j=10;if语句用j一次,即此后j=9,然后j减两次得7.第二次就是一样的方法了。其实你可以将printf语句分别放在各个语句后运行一下,j--的作用就出来了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j--;遇到分号本次运算结束,j更新为9,以此类推,第一次循环体内j更新为7
第二次进去是6!不是7,所以自减两次,懂了?
第二次进去是6!不是7,所以自减两次,懂了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询