开发者社区 问答 正文

十六进制转换成十进制,大神们帮忙解释一下while循环中的if语句意思

#include
#include
#include
int main()
{
char a[9];
gets(a);
int len,i=0;
long long sum=0;
double x;
len=strlen(a);
while(len)
{
if(a[len-1]>='A'&&a[len-1]<='F')
x=(a[len-1]-'7')*pow(16,i++);
else
x=x=(a[len-1])*pow(16,i++);
sum+=x;
len--;
}
printf("%d",sum);
return 0;
}

展开
收起
a123456678 2016-03-23 16:16:18 2336 分享 版权
1 条回答
写回答
取消 提交回答
  • 可读性不好,还有错误,修改了一下:

     #include <stdio.h>
    #include <string.h>
    #include <math.h>
    int main()
    {
        char a[9];
        gets(a);
        int len,i=0;
        double sum=0;//修改
        double x;
        len=strlen(a);
        while(len)
        {
            if(a[len-1]>='A'&&a[len-1]<='F')
                x=(a[len-1]-'A'+10)*pow(16.0,i++);//修改
            else
                x=(a[len-1]-'0')*pow(16.0,i++);//修改
            sum+=x;
            len--;
        }
        printf("%.0lf\n",sum);//修改
        return 0;
    }
    2019-07-17 19:11:27
    赞同 展开评论
问答地址: