马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一轮江月明 于 2017-4-11 09:37 编辑 #include <stdio.h>
char *myitoa(int num, char *str);
char *myitoa(int num, char *str)
{
int dec = 1;
int i = 0;
int temp;
if (num < 0)
{
str[i++] = '-';
num = -num;
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
}
while (dec != 0)
{
str[i++] = num / dec +'0';//这里为什么要加‘0’呢?左边是char,右边是int,为什么可以这么转换呢?
num = num % dec;
dec /= 10;
}
str[i] = '\0';
return str;
}
int main(void)
{
char str[10];
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
}
上面为什么要加‘0’呢?左边是char,右边是int,为什么可以这么转换呢?
你去查看下ASCII码表就知道 '0'的ASCII是0x31即 48 而随后1-9的ASCII码都是对应的'0'的ASCII值加上数字值,所以当你要将1-9的值转换成ASCII码,就是输出字符也是这个数字,只需要加上'0'的ASCII就可以了,或者改成加上48也是一样的
|