Почему моя функция, возвращающая long long, возвращает 705032704? - PullRequest
0 голосов
/ 07 октября 2019

Я работаю над кодом, который возвращает значение в базе 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
Как это исправить?

1 Ответ

1 голос
/ 07 октября 2019

power имеет тип int вместо long long.

Демо

...