main()
{char *p,s[6];
int n;
p=s
gets(p);
n=*p-'0';
while(*(++p)!='\0')
n=n*8+*p-'0';
printf("%d\n",n);
}
请问倒数第四行的-'0'是什么意思 为什么要减这个?
还有 如果十六进制转换成十进制时 输入abc...这些字母时系统认吗?应该加一些什么语句?
參考答案:将*p中保存的字符转换为对应的数字
ASCII码中0为48,1为49,....以此类推,可以用printf("%d",*p)查看。
字符'0'+'1'在c中会先被转换成ASCII码再相加,即48+49,为了实现'0'+'1',可以先对字符'0'和'1'减48,即为数字的0和1,然后再计算。而字符'0'为48