continue和break

下列代码输出是?
int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) continue;
    sum += i;
}
printf("%d\n", sum);

int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) break;
    sum += i;
}
printf("%d\n", sum);
我的解答思路和尝试过的方法↓

continue从1加到10,break从1加到9,
不过i%2显然是用来与for中的i=0判断的,我不明白为什么i%2明明在i=0后面还要回去和i=0判断?
求解释

第一个表达式不是判断,是初始化,要和第二个表达式判断

第一段 continue : sum = sum + 0 + 2 + 4 + 6 + 8 = 20, if(i%2) continue; 当i = 0时,i%2 = 0%2=0,if(0) 显然条件不满足,所以continue不被执行到,所以有了sum += i; 这句被执行。当i=1时,i%2 = 1%2 = 1, if(1) 条件成立,continue 被执行,则sum+=i; 被跳过。以此类推,i 从 0 循环到 9 。
第二段 break: sum = sum + 0 = 0, 当i = 0时,i%2 = 0%2=0,if(0) 显然条件不满足,所以 break 不被执行到,所以有了sum += i = 0; 当i=1时,i%2 = 1%2 = 1, if(1) 条件成立,break 被执行,跳出 for()循环,输出sum = 0。

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

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