C中的字符型数据

#include<stdio.h>void main(){ char c1,c2; c1=97; c2=98; printf("%C%C尀n",c1,c2); printf("%d%d尀n",c1,c2); }会输出ab 9798但是如果把c1=97;c2=98;改为c1=‘97’;c2=‘98’;就会输出:785556why?就是不明白数字加那个单引号和不加单引号分别是怎么转换的
2026年09月22日 05:59
有2个网友回答
网友(1):

c1=97 ,其实就是将ASCII码为97的字符赋给c1,如果 c1='97',就是将97这个数字的第八位赋给c1,因为字符是八位的,至于输出了5556 就是因为数字7和8的ASCII是55 和56了,这里面有个将字符转换成ASCII码的过程,输出的时候字符都会用ASCII码来匹配输出的

网友(2):

这是因为 c1 和 c2 都是 char 字符类型,是单字节的。 '97' 是双字节, c1='97' 只会把最后一个字节赋值给 c1, 相当于 c1 = '7', 字符 '7’ ascii 码值为55。 同理 c2 = =‘98’ 相当于 c2='8', 字符 '8' 的 ascii 码值为 56.