c语言中int和char

int为什么能够和char相互转化在单片机中。我实在没有想懂和看懂别人写的,
比如在程序中写
int a= 1和char a=1一样吗

表示的数据类型不同:int是表示数值型变量的,char是表示字符型变量的
占用的存储空间不同:int在32位机器下占用4个字节,char在相同机器下占用1个字节
表示的数据范围不同:整型和字符型是互通的,他们是在内存中存储的本质是相同的,只是存储的范围不同而已,char只有一个字节,int有4个字节,能表示的内容大小不一样;char只有0~255,int范围[-2^31 , 2^31 -1] (处理器是64位的可以更大)。

值的范围不一样

不一样,int a= 1是数值型,具有数值型特征,比如数运算,数字1没有ASCII值(数字1在计算机中就是按数值1存储的。),char a=1 为字符型,ASCII为49

  1. int a=1 a=0x00000001
  2. char=1 a=0x01
这篇文章:C语言中int转char型 也许有你想要的答案,你可以看看
你还可以看下c语言参考手册中的 c语言-atomic_char

就一句话:不一样啊,int的1是1,char保存1要用ASCLL码,是49

因为字符在内存中是以ASCII值保存的,而ASCII值是整形,所以可以相互转换

int是表示数值型变量,char是表示字符型变量

你的问题在于困在字面意思了,
char字面上是指字符,在高级语言中的确只能用字符赋值否则会报错,像char a=1; java,C#这类高级语言下不会让你通过的
但是在低级语言像单片机环境,虽然也是char但是它是指1个字节长度的数据类型,并不非得是""字符“”类型,所以char a=1;并不会报错