比如说这个程序:#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);结果一样吗?
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
无论 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 的次序是次要的。
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消