字符数据与整形数据的转换

字符数据和整形数据在一定条件下可以相互转换。在所有的编译系统中,都规定以一个字节来存放一个字符,字符数据时以ASCII码存储的。如,字符‘a’,它的ASCII码是97,它的存储形式为:“01100001”(ASCII码为7位,所以第一位补0),而这与整型数据的存储方式没有什么区别(如果整型数据也是占一个字节的话),这就使得字符型数据和整型数据之间形成了通用。

可以将一个整数赋给一个字符变量,如下面的两句代码是等效的:

char c = 'a'; /*字符常量'a'赋值给c*/
char c = 97;  /*将'a'的ASCII码赋值给字符变量c*/

执行第1行时,先将字符a转换为对应的ASCII码97,然后存放在变量c中;

执行第2行时,直接将整数97存放在变量c中。

二者的效果完全相同。但要注意的是,赋给字符变量的整数的数值范围是有限的(有效字符是有限的,不是所有的ASCII码中的字符都可以输出),范围为0~127,它们对应有效的字符。

字符数据既可以以字符形式(%c)输出,也可以以整数形式输出(%d)。按字符形式输出时,系统先将存储单元中的ASCII码转换成相应的字符,然后输出;按整数形式输出时,直接将ASCII码作为整数输出。

也可以把字符数据当做整型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。


下面是一个小例子:

# include <stdio.h>
void main(){
  char c1=97,c2=98;/*等价于char c1='a',c2='b'*/
  printf("%c,%c,%d,%d\n",c1,c2,c1,c2);
  c1=c1-32;
  c2=c2-32;
  printf("%c,%c,%d,%d\n",c1,c2,c1,c2);
}

输出结果为:

a,b,97,98
A,B,65,66


一个数据的值是由存储在存储单元中的二进制数值决定的,而输出的形式是有printf函数中的格式说明(%d,%c等)决定的。如果在内存中的97,用%d格式输出就是整数97,如果用%c格式输出就是字母a。

 
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值