友友们谁能说说这个的思路啊

以下程序的运行结果是 【正确答案: D】 。
#include <stdio.h>
void main()

    int x=8;
    for(;x>0;x--)
    { 
        if(x%3)
        { 
            printf("%d,",x--);
            continue;
        }
        printf("%d,",--x);
    }
}
A.7,4,2,
B.8,7,5,2,
C,9,7,6,4,
D.8,5,4,2,

x%3表示不为0就执行内部语句;printf("%d,",x--);表示先输出x,再执行x-1;continue;表示跳过本次循环直接开始下一次循环;printf("%d,",--x);表示先执行x-1,再输出x

8 % 3 = 2 为真,输出8,x-- ,x = 7,continue
x--,x = 6,6 % 3 == 0为假,输出--x,即5, x = 5;
x --, x = 4,4 % 3 = 1为真, 输出 4, x --,x = 3,continue,
x --, x = 2,2 % 3 = 2为真,输出 2,x--, x = 1,continue;
x-- ,x = 0退出循环
于是输出为8,5,4,2