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