求大佬们帮忙看一下 c++的一个十六进制转十进制的程序!!感激

Summit_Cron 2019-03-10 08:19:02
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

int main()
{
char a[10];
int i;
gets(a);
long n,temp=0;
int len=strlen(a);
for(i=0;i<len;i++)
{

if(a[len-i-1]>='0'&&a[len-i-1]<='9')
{
n=a[len-i-1]-'0';
n=n*pow(16,i);
temp+=n;
}
else
{
a[len-i-1]=a[len-i-1]-17;
n=a[len-i-1]-'0';
n+=10;
n=n*pow(16,i);
temp+=n;
}
}
cout<<temp<<endl;



return 0;
}


就是这么一个小程序 作用是输入十六进制的数字 转换为十进制的 我自己测试低于八位得数都ok 可是正好8位得数 最后结果会出来负数 这是为啥啊求大神解答

...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Summit_Cron 2019-03-10
  • 打赏
  • 举报
回复
引用 1 楼 wingrez 的回复:
没有检查出逻辑错误。检查出了溢出问题,第11行,换成long long。
感谢 正确了
wingrez 2019-03-10
  • 打赏
  • 举报
回复
没有检查出逻辑错误。检查出了溢出问题,第11行,换成long long。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧