S1E29动动手第一题
本帖最后由 一轮江月明 于 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 = '-';
num = -num;
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
}
while (dec != 0)
{
str = num / dec +'0';//这里为什么要加‘0’呢?左边是char,右边是int,为什么可以这么转换呢?
num = num % dec;
dec /= 10;
}
str = '\0';
return str;
}
int main(void)
{
char str;
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也是一样的 lumber2388779 发表于 2017-4-11 10:08
你去查看下ASCII码表就知道 '0'的ASCII是0x31即 48 而随后1-9的ASCII码都是对应的'0'的ASCII值加上数字值, ...
万分感谢!万分感谢!
页:
[1]