关于switch-case问题

   上两天做了一个简单的switch的题目,竟然做错了

题目如下:

int main()
{
   int k = 5,n = 0;
   do
   {
    switch(k)
    {
    case 1:case 3:n+=1;break;
    default: n = 0;k--;
    case 2:case 4:n+=2;k--;break;
    }
    cout<<n;
   } while (k>0&&n<5);
}

我开始的结果就是0234,但实际结果是2345;

我错的原因就是如果没找到匹配项就只想default的执行但没有执行default后面的case语句。

switch的执行流程是如果有匹配的case就从那点开始一直往下执行,一直到遇到break或到switch结束;

如果没有case匹配又没有default就跳出switch;

如果没有case匹配但又有default就要从default那一点开始执行一直到break或结束switch

 

posted @ 2012-11-09 21:21  ying870510  阅读(287)  评论(0编辑  收藏  举报