0main() {int i=0,j=10,k=2,s=0;for (;;){i+=k;if(i>j){printf("%d\n",s);break;}s+=i;}} 的答案为什么

么是30而不是42

你会认为是42,是因为当i=8,i<j=10;s=20,之后再循环i=8+2=10;j=10,所以i并不大于j,条件不满足s=i+s=30,
之后i=12>j,进入if语句,打出s=30,break跳出循环,结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-21
main()
{
int i=0,j=10,k=2,s=0;
for (;;)
{
i+=k; //i=i+k , 2,4,6...
if(i>j) //i==12时条件成立,输出此时的s=2+4+6+8+10=30
{
printf("%d\n",s);
break;
}
s+=i; //s=s+i, 2+4+6+8+10
}
}
第2个回答  2012-03-21
因为i到12的时候就进不了if语句了
相似回答