switch|C语言-switch语句执行顺序

switch|C语言-switch语句执行顺序


①例子
#include< stdio.h>
main()
{int k=5n=0;
do {
switch(k){
case1:case3:n+=1;k--;break;
/*当k=1或3时 , 执行此句 , 这是两种case合并成一行了 。 */
default:n=0;k--;
/*当k不等于1234时 , 执行此句 , 默认兜底情况 。 */
case2:case4:n+=2;k--;break;
【switch|C语言-switch语句执行顺序】/*当k=2或4时 , 执行此句 。 */
printf(\"%d\"n);

while(k>0&&n<5);
/*此句已经不属于switch语句 ,
只要满足循环条件k>0且n<5 , 就继续将k值输入switch 语句 ,
直到条件不满足 , 循环结束 , 输出结束 。 */

~
②执行顺序
该程序存在嵌套语句 ,
外层为do{while()语句 ,
内层为switch语句和printf语句 。
switch语句中有3行3种情况 ,
根据k值找到对应case标号 ,
没有对应case执行默认default情况 ,
注意:
对应 case或default之后的情况也要执行 , 直到 switch语句结束 。
除非遇到 break才能提前结束switch语句 。

③计算过程
第一次循环
初值:k==5 , n==0
(1)switch语句
没有对应case
执行default: n==0k==4
执行case2:case4:n==2k==3
break跳出 switch语句
(2)printf语句
打印 n==2

第二次循环
k==3n==2
(1)switch语句
对应case3
执行case1:case3:n==3k==2
break跳出 switch语句
(2)printf语句
打印 n==3
~
第三次循环
k==2n==3
(1)switch语句
对应case2
执行case2:case4:n==5k==1
break跳出 switch语句
(2)printf语句
打印 n==5

此时n不满足循环条件k>0&&n<5
跳出整个do()while()循环
最终打印结果:235