2015-09-19 3 views
1

У меня есть большое количество, хранящееся в массиве char, и я возвращаю его в cout.C++ Num in char array to int

#include <iostream> 

int num() 
{ 
    char num[] = "160919040944"; 

    return (int)num; 
} 
int main() 
{ 
    std::cout << num(); 

    return 0; 
} 

Он печатает случайное число вместо указанного мной.

+1

'(int) num' не делает то, что вы думаете. Он производит числовое значение адреса памяти, в котором хранится первый символ 'num'. В любом случае число '160919040944' не будет вписываться в' int' на большинстве платформ. –

ответ

1

Как указано в комментарии, (int)num этого не делает. Что лет нужно вернуть long long из вашей функции с помощью std::stoll

long long num() 
{ 
    char num[] = "160919040944"; 
    return std::stoll(num); // need conversion to long due to overflowing an int 
} 

Функция std::stoll преобразует std::string (в данном случае неявно строится из char*) в long long int.

Спасибо @Lorehead за комментарий

+1

Поскольку 'long' на многих платформах 32 бита, вам нужно' long long'. – Davislor

+0

@Lorehead правильно, работает на моей платформе ('long' бывает 8 байт), но вы абсолютно правы,' long long' гарантируется как минимум 64 бита, отредактированный. – vsoftco