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

问题描述:

设j为int型变量,则下面for循环语句的执行结果是______________
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呢?这个始终搞晕~
1个回答 分类:综合 2014-10-30

问题解答:

我来补答
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)的意思.
 
 
展开全文阅读
剩余:2000
上一页:....详细步骤
下一页:望能尽快解答