字符常量,常量中的字符太多以及字符常量输出问题

问题遇到的现象和发生背景

规范的常量;‘\0x6d'规范 但是'\0321882'不规范

问题相关代码,请勿粘贴截图

#include
int main()
{char a='\0x6d';
char b='\03218';
char c='\0321882';
printf("%c %c\n",a,b);
//printf("%c\n",c);
return 0;
}

运行结果及报错内容

d 8
warning :初始化int 到 char 截断
常量中的字符过多

我想要达到的结果

为什么输出的是 d 8而不是单引号内的内容;
int 到char 截断常量值是什么意思?

你这个问题 char类型占一个字符 你用单引号引了多个字符是不合理的吧 所以只识别到你单引号中最后一个字符。 所以两个打印都只打印了最后一个字符。

至于说的int到char的截断 应该与单引号引用这串字符的处理有关,char类型实际底层也存储的是0和1字符 按1个字节的数字通过ASCII码表进行转换,ascii码表了解一下。

除此之外,你要理解int和char的区别,int占四个字节,char占一个字节,把int转成char,肯定是要截断int只取一个字节处理的。


可以查看手册:c语言-字符常量 中的内容