c++ - 为什么我的函数返回 long long,返回 705032704?

标签 c++ loops decimal long-integer radix

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

#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) 基数 35 和 (6PMP5GK) 基数 30 都 = 5000000000
但是我的代码返回的是 705032704 705032704 而不是 5000000000 5000000000
我该如何解决这个问题?

最佳答案

powerint 类型而不是 long long

Demo

关于c++ - 为什么我的函数返回 long long,返回 705032704?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58269704/

相关文章:

.NET Javascript 中的decimal.ToString(format)

java - 我在这里做错了什么(Java)十进制到二进制

c++ - 继承,定义创建指定类型对象的函数?

c++ - 四嵌套 unordered_map 怪物的替代方案?

c++ - 如果从 C++ 中的构造函数抛出异常,如何清理已初始化的资源

java - 如何得到所有相加成一个数的连续数集?

performance - 有什么办法可以避免这些嵌套循环吗?

c++ - 类模板静态成员初始化两次

jQuery 循环动画每次都会暂停。如何避免停顿?

java - 在 Java 中将数字转换为小数点后 2 位