第二个printf里第二个ch和我输入的数字不一样是为什么?

#include
int main(void)
{
char ch;

printf("Please enter a character.\n");
scanf("%c", &ch);
printf("The code for %c is %d.\n", ch, ch);

return 0;

}

运行结果

我输入52出53,输入c出99,输入12出49,我跟着书上输入的啊……
而且书里第二个printf的第一个ch是c

第二个printf中,用%c输出的是输入的字符,用%d输出的是输入字符的ASCII码
输入52,实际scanf只接收第一个字符'5',5的ASCII码是53,所以输出是53
输入12,实际接收第一个字符'1',而字符1的ASCII码是49,所以输出是49
输入字符c,接收的就是字符'c',字符'c'的ASCII码是99,所以输出是99
没毛病啊。输入字符'c',第一个输出的就是'c'
===
你先弄懂一下数字5和字符'5'的区别就明白啦

输入输出参数的问题啦,可以看看这个文章巩固一下https://blog.csdn.net/u013706540/article/details/82184145?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165899959016781790790515%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165899959016781790790515&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-82184145-null-null.nonecase&utm_term=%25d&spm=1018.2226.3001.4450