关于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