天天看点

字符型char和整型int之间的关系

在C语言中并没有char类型的常量(但是在C++中却有,字符常量都是char类型),其实是用int表示char,字符型与整型相比只是更加节省内存。(在所有数据类型中,char类型占用的内存空间最少)

有符号的字符表示-128127,无符号字符表示0255。char相当于signed char还是unsigned char取决于编译器。

字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。在对字符型数据进行相加减运算的时候,系统会首先将char型数据以隐形的方式转化为int型数据再进行相加减运算。因此,由字符型数据在内存的存储方式来看,字符型数据在做数字运算时实际上是对字符本身对应的ASCII码进行相应的数值运算。

这种在单片机的通信中应用的最多:

字符型char和整型int之间的关系

在单片机的运算中,调试接口答应的都是char类型,但是底层会将char类型转换成int类型,最终全部按照二进制计算。

整型和字符型可以相互转换:

(char)整型变量=字符型变量

(int)字符型变量=整型变量

如下例子,输出的结果为一个为 ch 表示的字符,另一个为字符对应的 ASC II码。

char ch=‘a’;

printf("%c%d “,ch,ch);//分别输出ch的字符和对应的ASCII码。即打印出的是字符和整数。

printf(”%c%c%c",ch,ch+1,ch+2);//输出“abc”

char变量可以包含任意单个字符,所以可以给char类型的变量指定字符常量,作为其初始值。

字符常量是一个放在单引号中的字符。

char letter=‘A’;

char digit=‘9’;

也可以使用转义序列指定字符常量,如:

char newline=’\n’;

char tab=’\t’;

也可以用整数值初始化char类型的变量,只要该值在编译器许可的char类型的值域内即可,如:

char ch=74;

既然char和int本质都是整数,为什么还要作区分呢?

因为字符的个数相对较少,因而char型变量的存储单元可以比int型变量的存储单元小。其实就是提出一种char型变量专门存储字符,方便程序员的数据选择。

————————————————

版权声明:本文为CSDN博主「zhjqxy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zhjqxy/article/details/52975140

继续阅读