C中if(x%3)是什么意思?

#include<stdio.h>voidmain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}... #include <stdio.h>
void main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}

为什么这段程序输出的是8,5,4,2?
展开
 我来答
木澂
高粉答主

2018-12-04 · 繁杂信息太多,你要学会辨别
知道答主
回答量:46
采纳率:100%
帮助的人:1.2万
展开全部

1、含义

x%3的意思是,对X÷3求其余数,例如10%3=1 (10/3=3·······1)。

而if ( x%3 )的意思是,如果x%3的结果为真,即不为0,则执行if下面包含的语句。否则,就不执行。

2、原因

如代码所示,x定义为8,之后使用了一个for循环。循环条件为(;x>0;x--)。则,x的值在循环执行中,依次为8、7、6、5、4、3、2、1。

又有if ( x%3 ),且知,8%3=2,7%3=1,6%3=0,5%3=2,4%3=1,3%3=0,2%3=2,1%3=1。

需要注意的条件是,x--,这一条件,所以,每次x的值会在调用后自减一次;而--x,则是,减一后再使用;而continue,则是跳出一层循环,且不执行下面的语句。

则当8运行后,输出为8,在printf中自减成为7,又在for处自减,成为6,不满足x%3!=0,则,执行printf("%d,",--x),x又成为5,再按流程执行,等等等等。

因而,运行结果为8,5,4,2。

扩展资料:

1、x--

是指,先使用一次x,再使x自减1。

如int x = 6;

printf("%d",x);//此时得到6

printf("%d",x--);//运行得到6,x变为5

2、--x

是指,x先自减,再使用。

如int x = 6;

printf("%d",x);//此时得到6

printf("%d",--x);//运行得到5,x变为5

3、continue:

(1)终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。 

(2)结束当前循环,进行下一次的循环判断。

(3)终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行。

花式码农
2008-04-30 · TA获得超过1.7万个赞
知道大有可为答主
回答量:4894
采纳率:0%
帮助的人:4706万
展开全部
i%3就是求i除以3的余数。if(i%3)就是将这个余数变换成布尔值,然后作为if语句的判断量,变换方式:
如果余数是0,则转换成false,即不成立。
如果非零,转化成true,即if成立。
在这里x初始化为8.
首先进入循环,8>0,所以循环继续,8除以3余2,那么if判断正确,则输出x--,这里就是8,因为--是后缀的,先输出再自减,然后不输出--x,因为有continue语句,则直接进入下一个循环。
这里的程序的意思就是:
如果i除以3是非零值的话就输出x,然后x--,如果是0的话,则输出--x;
当然无论是哪种方式,for循环中也有个x--;
也就是说,整个循环的Step值是2.
8%3 = 2,输出8
6%3 = 0,输出5
4%3=1,输出4
2%3=2,输出2
所以最后的答案是8,5,4,2
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛眼视野
2016-01-04 · 生活百般滋味,记录生活所看所思
牛眼视野
采纳数:195 获赞数:832

向TA提问 私信TA
展开全部
if(x % 3) 等价于 if(x % 3 != 0)

%:运算符取余,if(x % 3) 意思即为:如果 x对3取余不等于0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xlw55
2008-04-30 · TA获得超过4367个赞
知道大有可为答主
回答量:2998
采纳率:0%
帮助的人:2819万
展开全部
if(x%3)等价于if(x%3!=0)

当x取8、5、4、2时,x%3!=0

故输出的是8,5,4,2。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式