所以,我复制了这个,结果是__1。但我真的不明白为什么。有人能解释一下这个问题吗?
#include <stdio.h>
int main(void) {
int a = 1;
int i;
for (i = -10 ; i < 11 ; ++i) {
if (i > 0)
continue;
else
break;
a *= 2;
};
printf("%3d\n", a);
return 0;
}
答案 0 :(得分:1)
您的for
循环是:
for (i = -10 ; i < 11 ; ++i) {
if (i > 0)
continue;
else
break;
a *= 2;
};
在第一次迭代中,i
为-10。这小于零,因此执行break
,将a
保留为1。
一般情况下,您可以continue
或break
,因此永远无法联系到a*=2
。
答案 1 :(得分:0)
'break'导致循环终止。删除'break'后再试一次。
更具体地说,你的循环从'i = -10'开始,你立即检查我是否大于零 - 它不是,所以你的'else {break; ''语句执行,在'a'改变之前终止循环。
答案 2 :(得分:0)
出于某种原因,你有一个;在for循环结束时,它也有一个中断,退出循环。