C进制转换

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:04:09
#include<stdio.h>
main()
{char *p,a[10];
int i,n=0;
p=a;
gets(p);
while((*p)!='\0')
{n=n*8+*p-'0';/*'0'是干什么的?*/
p++;
}
printf("%d",n);
}
=============================================
这是一个8进制转换10进制的小程序
为什么要加'0'呢,不太懂。

*p-'0' 这个东西是在计算当前这个位置上的字符等于多少
当*p=7,计算得整数7
当*p=6,计算得出6
……
当*p=0,计算得出0

因为*p是字符型的,减‘0’实际上就是字符到整型的一个转换过程。
任何字符,数字、字母、标点就表示为acsii码的。

得到的是数字 0 1 2 3 4 5 6 7 8 9

加上'0'就是ASC值48 就转化'0', '1'.....

这是把输入的字符型转换成其所代表的整型,如:'6'-'/0'就等于6