本题的运算没有看懂,求解析

问题遇到的现象和发生背景

现象:不知道k的运算规则了,尤其是本代码中的while后的意思

问题相关代码,请勿粘贴截图

int main(){int k=10; char c='a';do{switch(c++)
{case 'a':k++; case 'b':k--;case 'c':k+=3;break;case 'd':k=k%4;}}while(c!='c');printf("%d\n",k);return 0;

运行结果及报错内容

15

我的解答思路和尝试过的方法
我想要达到的结果

c 初始是 'a'
第1次循环 switch (c++) 中 c++是先判断c的值, 再将c的字符编码加1 变成'b'。
先判断c的值是'a',跳到case 'a':处开始连着执行 k++; k--; k += 3; 直到遇到 break;才跳出switch,之后k是13
然后while (c != 'c')是判断c的值不是'c'才继续循环。当前c的值是'b'就继续循环。
第2次循环 switch (c++) 先判断c的值是'b',(再将c的字符编码加1 变成'c')。跳到case 'b':处开始连着执行 k--; k += 3; 直到遇到 break;才跳出switch,之后k是15,
然后while (c != 'c')判断当前c的值是'c'就结束循环了。
最后k是15

如有帮助,望采纳!谢谢!