首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的函数返回long long,返回705032704?

为什么我的函数返回long long,返回705032704?
EN

Stack Overflow用户
提问于 2019-10-07 20:37:45
回答 1查看 73关注 0票数 0

我正在编写一段代码,它返回给定字符串和基数的以10为基数的值。但是对于以10为基数的大数值,我的程序只返回705032704。

代码语言:javascript
复制
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

    int val(char c)
    {
        if (c >= '0' && c <= '9')
            return (int)c - '0';
        else
            return (int)c - 'A' + 10;
    }

            long long basemachine(int base, char *str) {         //this function returns answer in base 10
            int len=strlen(str); int power=1; long long num=0;

           for (int i=len-1; i>=0; i--) {
              num+= val(str[i])*power;
              power=power*base;
           }
           return num;
         }

int main() {
    char str1[]="2P6X2MU";
    char str2[]="6PMP5GK";
    long long n=basemachine(35, str1);
    long long m=basemachine(30, str2);
    cout<<n<<" "<<m;
    return 0;
}

(2P6X2MU) base 35和(6PMP5GK) base 30均= 5000000000

但是我的代码返回的是705032704 705032704而不是5000000000 5000000000

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 20:42:54

power的类型为int,而不是long long

Demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58269704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档