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。