请问ch的值为什么不是65,而是A?

#include <stdio.h>
int main()
{
int a,b,c;
char ch='A';
a=10;
b=a+ch;
scanf("%d",&c);
printf("%d,%b,%f,%c\n",a,b,c,ch);
return 0;
}

ch 的是 %c 型,就是 A

改成 printf("%d\n",ch); 输出 65

这个你就得了解一下计算机是怎么识别数字和字符的,以及为什么,怎样我们才能输出一个字符。
计算机底层都是0和1的字符,然后按照bit,byte,等一定的规则存储和识别数据,才能识别到我们认识的数字,字符等,而这个识别规则,你需要了解一下。
其实就是我们常说的assii码表,根据这个表,按位以及字节数,把计算机底层的0和1字符转成数字,取数字对应的assii码表中对应的字符。
所以,一个字符,其实底层存储的还是0和1字符,你把他识别成数字,进行打印也是可以的。
而打印也有一个规则,涉及C语言printf输出格式化的规则,比如%d以数字进行输出,%c就是数字对应的assii码表对应输出
所以你要了解两个东东:1:assii码表了解一下。 2:printf格式化输出规则了解一下

img

65是‘A’的ASSIC码值,用%c输出的时候,按照char类型输出

printf函数为格式化输出,指定了%c,就会按照字符输出,打印A;指定%d,按整型输出打印65;指定0x%x,按16进制输出打印0x41。灵活的输出打印方式可以方便我们调试检验程序,进行数据对比。