字符与ASCII码,整数关系及null,‘0’,0,‘\0’的区别

**1,字符串比较大小是通过比较ascll码进行比较的。**如:char a=‘a’;char b=’b’;‘a’的ascll码为97,’b’为98所以a<b。另外字符是可以通过ascll码的加减法实现字符改变的。char c=‘0’;(‘0’的码为48)c=c+17;(c=‘A’,‘A’的码为65)。
2,类型转换时字符与整形的关系。
char c=’0‘;
int s=(int)c -----》s=48
可见,字符变量c以整型读取时为该字符的ascll码,以字符读取时为该字符。;
字符型变量也可以直接用ascll码存入数据。
char c=48 -----》等价于char c=’0‘;
printf(“c=%c”,c)--------》c=0;
printf(“c=%d”,c)--------》c=48;
区别:用字符存入字符变量时字符要加‘ ‘单引号,用ascll码存入字符变量时什么都不用加。
3,null,’\0’ , 0 , ‘0’ 的区别
‘\0’表示字符串结束,它在ASCII中的值为0(数值0,非字符‘0’)
所以在数值上NULL,’\0’,0是一样的,都是0,但’0’就不同了,在ASCII码中编码为48,所以字符0和上述三个值不同。

在内存中NULL 和’\0’ 和’0’都是一个8位的char类型,NULL 和’\0’ 值一样,都是0,以数字方式读取就是0,以字符串读取时就是’\0’或者null(和编译器有关),而‘0’在内存存储着48,以字符读取就是’0’,以数字读取就是48,至于0,可能是char ,int ,float,double等类型,但是值和NULL和’\0’一样,都是0

printf("%d",‘0’);==>48

printf("%c",‘0’);==>0

printf("%c",0);==>空(即NULL)

printf("%d",0);==>0

那么0+‘0’,0+’\0’分别是什么呢?

printf("%c",0+’\0’);==>空(NULL) 先转换成int,然后ASCII编码相加为0,%c输出,转换成char,所以输出NULL

printf("%d",0+’\0’);==>0 先转换成int,然后ASCII编码相加为0,%d输出,不用转换,输出数字0

printf("%c",0+‘0’);==>0

printf("%d",0+‘0’);==>48
————————————————
版权声明:上面的第三点转自CSDN博主「mylinx」的原创文章,
原文链接:https://blog.csdn.net/mylinx/article/details/6873253

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值