getchar输入2473只读2 那么为什么输入2473得到668977 输入2得到66 且最后printf的时候c=10?(语言-c语言)


#include
#include
int main()
{
    int c=0;
    while((c=getchar())!='\n')
    switch(c-'2')
    {
        case 0:
        case 1:putchar(c+4);
        case 2:putchar(c+4);break;
        case 3:putchar(c+3);
        default:putchar(c+2);break;
    
        
    }
    printf("\n");
    system("pause");
    return 0;
}

getchar输入2473只读2
那么为什么输入2473得到668977
输入2得到66
且最后printf的时候c=10,那为啥这个时候printf("\n")就是668977
\n不是换行么
第二次执行到switch(c-'2')的时候c=52 不是54 也不是50 是为什么捏

getchar读入一个字符,输入2473,第一个2就是数字字符'2'
输入'2'时,switch(0),执行两次putchar(c+4),因为c是‘2’,所以加4就是'6',因此输出66
输入'4'时,switch(2),执行一次putchar(c+4),输出8
输入'7'时,switch(5),执行default,输出9
输入'3'时,switch(1),执行两次putchar(c+4),输出77
===========
且最后printf的时候c=10 ,因为'\n'就是10,所以switch是不执行的,直接printf输出换行符结束了