关于十六进制转化为十进制的问题
#include <stdio.h>#include<string.h>
int main()
{
int i,j,k,n=1,s=0;
char a[500];
gets(a);
k=strlen(a);
if(n==0)
printf("0\n");
else
{
for(i=k-1;i>=0;i--)
{
if(a[i]>='A')
a[i]=a[i]-'A'+10;
else
if('0'<=a[i]&&a[i]<='9')
a[i]=a[i]-'0';
s=s+a[i]*n;
n=n*16;
}
printf("%I64d\n",s);
}
return 0;
}
输入 FE65CDBA 得出4268084666 但是把 printf("%I64d\n",s); 改成printf("%d\n",s)输出的是一个负数 这是为什么