关于switch语句,case和default的执行顺序,

#include <stdio.h>
main()
{  int c=0,k;
  for (k=1;k<3;k++)
    switch (k)
    { default: c+=k;
case 2: c++;break;
case 4: c+=2;break;
    }
  printf("%d\n",c);
答案是3,为什么执行完default还要执行case2

先执行case,当所有的case都判断完不符合条件的时候,才会执行default,无论你的default放在哪,第一行,最后,或者中间位置。
default是缺省默认的意思,default在switch语句中不管放在哪都是从第一个case开始执行,当所有的case都不满足条件时,才执行default。
需要注意的是,default在最后一行时下面的break可以省略不写,但如果没有在最后一行default下面需要加上break,否则执行完default后会继续执行下面的代码直到遇到break跳出循环
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-26
因为你default的后面没有break语句,所以他会接着执行下面的语句。一般在使用switch语句的时候在每隔case结束后都要加上break避免错误,default通常也都是放在所有case语句后。追问

我想问是不是default和case不存在谁先谁后,就是按顺序执行,不是先执行case,没有符合的才执行default吗?

追答

对的啊,也是按照语句的顺序执行下来的,如果哪一条符合条件就执行。

本回答被提问者采纳
第2个回答  2013-02-26
你default之后没有break,所以case循环一直执行下去。
所以一般把default放在最后。来自:求助得到的回答
第2个回答  2013-02-26
为什么执行完default还要执行case2——因为该分支中没有break语句。
相似回答