为啥在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);
结果一样吗?

波斯汪
浏览 200回答 2
2回答

繁星淼淼

无论 default 位置在前在后,都是先判断 各个case, 最后进 default。无论 进入某个 case 或 default,程序要 执行到 break,或开关的结束 才终止。例如:int c=0,k;  k=1;switch (k)    {case 1: c+=k;// 满足 case 1 进入条件,但这 行 没遇到 breakcase 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, 但这 行 没遇到 breakcase 2: c++; break; // 于是 还要 走过 case 2: c++;直到遇break;case 4: c+=2;break; } 所以开关语句里的 break 是很重要的。而 case/default 的次序是次要的。

跃然一笑

你的做法显然是会有影响的一般的建议对于default也要使用break,这样位置的问题就不会存在
打开App,查看更多内容
随时随地看视频慕课网APP