一层一层看
i从2开始,i<5,所以i取值2,3,4
内层循环,while(!i),由于i始终大于0,所以!i一直返回0,这就是个迷惑项,不用管它
因为是do,while循环,至少执行一次,所以你把do。。。while删掉就行了,就是执行一次
相当于每次循环执行两次n++
那么再分析到i%3,就需要从头分析了
当i==2时,执行了continue,那么while循环里的n++就不会执行了,只执行后面的n++
当i==3时,没有执行continue,所以执行2次n++
当i==4时,又执行了conitnue,所以只执行一次n++,一共执行了4次,n初始是0,执行4次n++,所以最终n的值是4
i=2时,i%3=2,if条件成立,continue,进行while条件判断,由于i不为0,所以!i就为假,循环结束,n++后n为1
继续for循环,i=3,i%3==0,if条件不成立,n++后n=2,while(!i)继续为假,while循环结束,n++后n=2
继续for循环,i=4,i%3=1,if不成立,n++后n=3,while为假,循环结束,n++后n=4
继续for循环,i=5,不满足循环条件,for循环结束
最后n=4