一道书上的练习题,关于switch解决思路

一道书上的练习题,关于switch
main()
{
int a=0,i=1;
switch(i)
{
case 0:
case 1:a+=2;
case 2:
case 3:a+=3;
default:a+=7;
}
printf("%d",a);
}
最终结果是12,很不解这12是怎么得来的?

------解决方案--------------------
额,switch ,你要是没有加break;结束的话
它就会一直运行到底。也就是a=2+3+7=12
其实lz多看几页,书上肯定有写的
------解决方案--------------------
在每个case后面没有加break,就没有跳出siwtch语句,还在里面执行,所以剩下的都会执行一遍,2+3+7=12,结果就是12了
------解决方案--------------------
switch是顺序执行的,从“入口条件”进去,执行这条语句后,如果不强制退出条件语句,它就会得寸进尺,一直执行到底!!!
也许这就是打破砂锅问到底吧。。。
------解决方案--------------------
如果你的case后面没有跟上break的话,那么他就会从你的对应case入口处,一致往下执行,知道switch结束