c='A', (此时c='B')k=1,break,k=2
c='B', (此时c='C')k=1, k=3,break;k=4
c='C',.(.....'D'),k=6breakk=7
c='D',(.....'E'),k=1breakk=2
c ='E', (.....'F')k = 20break;k=21
c='F',(....'G')k=7,k=8
c='G',break
k=8
你要注意到 'B'这句是没有break的
你再推推
难道我算错了
DEBUG下就知道了么,刚调试了下,蛮神奇的,由于switch里是c++,所以,它会先对比一次再加一,流程如下:
刚开始,c=A,所以执行caseA,k++,然后c++,break,最后k++;此时k=2,c=B;
第二次,先对比后加,刚开始c=B,执行caseB后,k--变0,c++变C,但由于caseB后没有break,所以switch继续执行,到了caseC,符合条件,k+2=2;然后break;最后k++;此时k=4,c=C;
第三次,先执行caseC,k+2,然后c++,break;最后k++;此时k=7,c=D;
之后都同理;
第四次,先caseD,再c++,break;k++;此时k=2,c=E;
第五次,caseE,此时k=21,c=F;
第六次,default,最后k++;此时k=8,c=G;
满足条件,输出k=8