关于#c语言#的问题:执行case1变成1,再执行case1变成2,再执行case2变成4输出

img


第一个结果不应该是4吗?一开始是0,执行case1变成1,再执行case1变成2,再执行case2变成4输出。可是答案不是这么算的,请各位告诉我一下怎么算的

case 2不会向下继续运行,所以只有s=3时,case 3才会被执行
第一次循环,s=0,执行case 0,由于没有break,会连续执行case 1和case 2。case 1后,s=1,case 2后,s=3(注意是s+=2,case 1已经让s=1了),然后break跳出switch。继续for循环,此时s=3,case 3执行一次,然后s继续增加, 再也不会等于3了,所以case 3只执行一次

第一次循环,s=0,执行case0,case1,case2 此时s=3;第二次循环s=3,执行case3,default,此时s=10;第三次循环,s=10,执行default,s=14