C中if(x%3)是什么意思?
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)终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行。
如果余数是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
%:运算符取余,if(x % 3) 意思即为:如果 x对3取余不等于0
当x取8、5、4、2时,x%3!=0
故输出的是8,5,4,2。