劲力宝纳米抗磨润滑油:一道STWITCH

来源:百度文库 编辑:神马品牌网 时间:2024/04/23 22:49:09
main( )
{ char *s="12134211"; int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{ switch(s[k])
{ case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
v[i]++;
}
for(k=0;k<4;k++) printf("%d ",v[k]);
A)4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8答案B能解释下为什么吗?

switch(s[k])
{ case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
由于没有break
所以每个case的代码段都执行了一遍,最后i=3,
所以v[i]++每次都加在v[3]上

因为没有break,虽然在前面几个case中有可能匹配条件了,但是由于没有break,还是会执行最后的那个case '4':i=3; ,所以就是B了