①原程序
#include<studio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3){printf("%d,",x--);continue;}
printf("%d,",--x);
}
}
输出结果=8,5,4,2,
~
②第一次循环
x=8
满足x>0
x%3=2,为真
输出x--=8 ,(x=7)
~
③第二次循环
x=6(因为for语句中的x--)
满足x>0
x%3=0,为假
continue跳出本次循环
输出-- x=5, (x=5)
~
④第三次循环
x=4(因为for语句中的x--)
满足x>0
x%3=1,为真
输出x--=4, (x=3)
~
⑤第四次循环
x=2(因为for语句中的x--)
满足x>0
x%3≠0,为真
输出x--=2 ,(x=1)
~
⑥没有第五次循环
x=0(因为for语句中的x--)
不满足x>0
循环结束
~
⑦综上所述
最终结果=8,5,4,2,
~
注意x%3是真是假
不是看x是不是能整除3
而是看余数等不等于0
~
注意本题中输出值,容易混淆x值
x--为先算后减
--x为先减后算
for语句中还有 x--
每一次输出,
都伴随着一次或者两次x值的变化。