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

#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?

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-04-30
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本回答被网友采纳
第2个回答  2016-01-04
if(x % 3) 等价于 if(x % 3 != 0)

%:运算符取余,if(x % 3) 意思即为:如果 x对3取余不等于0
第3个回答  2008-04-30
if(x%3)等价于if(x%3!=0)

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

故输出的是8,5,4,2。本回答被提问者采纳
相似回答