字符与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‘;
ascii共有多少个字符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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。