你是问运行结果吗,还是问这个switch是啥意思?
你的答案是正确的啊
运行过程:输入1234,那么while就循环四次,每次c的值分别为'1','2','3','4'
switch(c-'2')就是比较输入字符与字符2的差值,那么根据输入,差值分别为-1,0,1,2
差值为-1时,所有case都不满足,进入default,输出c+2,即字符'3'
差值为0时,执行case 0,case 1,case 2,case如果没有break,会一直执行后续的case,直到遇到break或结束。显然case 2才有break,所以实际输出两次c+4,即字符'2'+4,就是'6'
差值为1时,执行case 1和case 2,道理和上面一样,也是输出两次c+4,即'3'+4,就是'7'
差值为2时,执行case 2,输出一次c+4,即'4'+4,就是'8'
所以最终输出字符串 366778
当c='1'时c-'2'=-1,落入default,输出c+2就是'3'
当c='2'时c-'2'=0,落入case 0,1,2,输出c+4就是'6',输出c+4还是'6',break
当c='3'时c-'2'=1,落入case 1,2,输出c+4就是'7',输出c+4还是'7',break
当c='4'时c-'2'=2,落入case 2,输出c+4就是'8'
就是输入的字符减去'2'这个字符,也就是c字符的ascll码减50
输入1时:c-'2'=-1,执行default,c+2输出3
输入2时:c-'2'=0,执行case 0,case 0 为空,没有输出,
因为没有break,所以继续执行case 1,输出c+4是6 ,
同理,继续执行case 2,输出c+4是6,
执行break退出switch语句;
输入3时:c-'2'=1,执行case 1,c+4是7,
没有break,继续执行case2,输出c+4,是7,
执行break退出switch语句;
输入4时:c-'2'=2,执行case 2,c+4是8,
执行break退出switch语句