main() { int k=5,n=0; while(k>0) { switch(k) { default :break; case 1 :n+=k; case 2 :case 3 :n+main(){ int k=5,n=0;while(k>0){ switch(k){ default :break;case 1 :n+=k;case 2 :case 3 :n+=k;}k--;}printf("%d\n",n);} 我想知道 结果 7 是怎么算出来的.到底什么顺序?break 还是按CASE123执行下去?.

问题描述:

main() { int k=5,n=0; while(k>0) { switch(k) { default :break; case 1 :n+=k; case 2 :case 3 :n+
main()
{ int k=5,n=0;
while(k>0)
{ switch(k)
{ default :break;
case 1 :n+=k;
case 2 :
case 3 :n+=k;
}
k--;
}
printf("%d\n",n);
}
我想知道 结果 7 是怎么算出来的.到底什么顺序?break 还是按CASE123执行下去?.

第一次循环:k=5,进入switch,由于没有相应case,故跳出循环,k减1=4.第二次循环:k=4,进入switch,由于没有相应case,故跳出循环,k减1=3.第三次循环:k=3,进入switch,符合case3,执行n=n+k;n为3,k减1=2.第四次循环:k=2,进入s...