在switch 分支语句中,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);
}
和这个程序:
#include <stdio.h>
main()
{  int c=0,k;
  for (k=1;k<3;k++)
    switch (k)
    { case 2: c++;break;
case 4: c+=2;break;
    default: c+=k;
}
  printf("%d\n",c);
结果一样吗?

无论 default 位置在前在后,都是先判断 各个case, 最后进 default。

无论 进入某个 case 或 default,程序要 执行到 break,或开关的结束 才终止。

例如:
int c=0,k;  
k=1;
switch (k)    
{
case 1: c+=k;// 满足 case 1 进入条件,但这 行 没遇到 break
case 2: c++; break; // 于是 还要 走过 case 2: c++;直到遇break;
case 4: c+=2;break; 
} 

例如:
int c=0,k;  
k=1;
switch (k)    
{
default: c+=k;// 不满足 case 2,4 于是 进入,default, 但这 行 没遇到 break
case 2: c++; break; // 于是 还要 走过 case 2: c++;直到遇break;
case 4: c+=2;break; 
} 

所以开关语句里的 break 是很重要的。而 case/default 的次序是次要的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-08
你的做法显然是会有影响的
一般的建议对于default也要使用break,这样位置的问题就不会存在
第2个回答  2013-09-08
无论你把default写在case语句中的任何地方,编译器都把它安排到最后才执行……
第3个回答  2013-09-08
一样的结果。答案都是3
相似回答