我有一個很大的數字存儲到一個char數組中,並將其返回給一個cout。C + +字符數組中的數字到int
#include <iostream>
int num()
{
char num[] = "160919040944";
return (int)num;
}
int main()
{
std::cout << num();
return 0;
}
它打印出一個隨機數而不是我指定的數字。
我有一個很大的數字存儲到一個char數組中,並將其返回給一個cout。C + +字符數組中的數字到int
#include <iostream>
int num()
{
char num[] = "160919040944";
return (int)num;
}
int main()
{
std::cout << num();
return 0;
}
它打印出一個隨機數而不是我指定的數字。
正如在評論中提到的,(int)num
不這樣做。什麼喲需要的是通過std::stoll
long long num()
{
char num[] = "160919040944";
return std::stoll(num); // need conversion to long due to overflowing an int
}
功能std::stoll
轉換從你的函數返回一個long long
一個std::string
(在這種情況下,從char*
隱式構造)到long long int
。
感謝@Lorehead的評論
'(int)num'不會做你認爲它的工作。它產生存儲器地址的數字值,在該地址中存儲'num'的第一個字符。無論如何,在大多數平臺上,編號160919040944都不適合'int'。 –