请讲解一下这个for循环和while运作过程,最后结果为什么是n=4

#include
void main()
{
int i,n=0;
for(i=2;i<5;i++)
{
do {
if(i%3) continue;
n++;
} while(!i);
n++;
} printf("n=%d",n);
}

1、for 循环 i = 2,满足 i < 5,执行 do i % 3 = 2,continue跳过 do 里面后续的内容,执行 while(!i) 不满足,退出 do while 循环,do 里面的 n++ 没有执行,然后执行第二个 n++,此时 n = 1
2、for 循环 i = 3,满足 i < 5,执行 do i % 3 = 0,执行 do 里面的 n++,此时 n = 2,执行 while(!i) 不满足,退出 do while 循环,然后执行第二个 n++,此时 n = 3
3、for 循环 i = 4,满足 i < 5,执行 do i % 3 = 1,continue跳过 do 里面后续的内容,执行 while(!i) 不满足,退出 do while 循环,do 里面的 n++ 没有执行,然后执行第二个 n++,此时 n = 4
4、for 循环 i = 5,不满足 i < 5,退出 for 循环,printf 打印 n 的值为4

i=2时 ,do循环中if(i%3)成立,跳出while循环,然后n++后n为1
i=3时 ,if(i%3)不成立,n++后n为2,while(!i)由于i>0而永远不成立,所以这个do...while只会执行一次。后面n++后n=3
i=4时,与i=2一样,只执行一次n++后 n=4

i为2时i%3不为0执行continue执行while后面的n++,此时n为1
i为3时i%3为0不执行continue执行while里面的n++和while下面的n++,此时n为3
i为4时i%3不为0执行continue执行while后面的n++,此时n为4
i为5for循环结束

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^