这个问题对我来说真的很烦,看了忘,忘了看。
1.首先我们来讨论一下字符'0'和数字'0'的区别。1.数据类型不同,数字型有int .long 之分,字符型有char,浮点型有float,double。 如果用十六进制表示,数字0位0x00,字符'0'为0x30.
2.数字与字符之间的转换:
(1)代码一:字符+数字=数字(会被强转成数值类型)
#include<stdio.h>
int main()
{
char a='9';
int b=3;
int c=0;
// int f=0;
// f=a-'0';
c=a+b;
printf("%d\n",c);
return 0;
}
结果:
liuzj@ET302Buildver:~/zhanghong/king/20180224$ vim zifu.c
liuzj@ET302Buildver:~/zhanghong/king/20180224$ gcc zifu.c
liuzj@ET302Buildver:~/zhanghong/king/20180224$ ./a.out
60
原因:字符9的ASCII码是57,转换成数字就是 57+3=60;
代码二:把字符9提前转换成数字9 结果就是9+3=12
#include<stdio.h>
int main()
{
char a='9';
int b=3;
int c=0;
int f=0;
f=a-'0';
c=f+b;
printf("%d\n",c);
return 0;
}
liuzj@ET302Buildver:~/zhanghong/king/20180224$ vim zifu.c
liuzj@ET302Buildver:~/zhanghong/king/20180224$ gcc zifu.c
liuzj@ET302Buildver:~/zhanghong/king/20180224$ ./a.out
12