我们都知道C语言可以强制类型转换,今天就让我们看看int和char之间的转换。
1、强制类型转换
#include<stdio.h>
int main(){
int a = 9;
char b = '8';
printf("%c\n",(char)a);
printf("%d",(int)b);
return 0;
}
运行结果:
哈哈哈哈哈哈,没想到吧!我也没想到。。。。。
被现实打脸的我查阅了资料发现强制类型转换并不是想转成啥样就转成啥样。它是有精度的损失的。
(1)从长字节数据类型转换为短字节数据类型,会产生截断:
如从4字节的int类型转换成1个字节的char类型,则取int数据的最低的一个字节。
(2)从短字节类型转换为长字节类型
从char转换为int:则在前面的三个字节补符号位,即补上0xffffff(char的首位为1),或0x000000(char的首位为0)。
原文链接:https://blog.csdn.net/yinqiaohua/article/details/44617305
2、通过ASCII码的加减变化。(推荐,是真的香)
#include<stdio.h>
int main(){
int a = 9;
char b = '8';
printf("%c\n",(char)(a+'0'));
printf("%d",(int)(b-'0'));
return 0;
}
运行结果:
3、使用string库中的函数
Character.forDigit(i,10) //i是一个整数
String.valueOf(i).charAt(0)
由于这函数挺难记的所以我没有多了解,毕竟懒,且健忘-_-!So在这里我就不写了。
但是我们都知道,ASCII码中数字只有‘0’-‘9’所以要将一个大于9的整数转换为字符串(注意不是字符)用 int+‘0’就不行了。