Тип long предназначен для представления целых чисел.
Тип long обычно имеет размер и диапазон значений как и тип int - 32 бита (4 байта), а тип long long обычно имеет размер 64 бита (8 байт). Размер можно узнать командой
std::cout << sizeof(long); //4 (байта)
std::cout << sizeof(long long); //8 (байт)
Диапазон представляемых значений типами long и long long:
long от -2 147 483 648 до 2 147 483 647
unsigned long от 0 до 4 294 967 295
long long от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
unsigned long long от 0 до 18 446 744 073 709 551 615
#include <iostream> // cout
#include <limits> // numeric_limits
using namespace std;
int main(){
cout << numeric_limits<long>::min() << endl; //-2147483648 Минимальное число long
cout << numeric_limits<long>::max() << endl; //2147483647 Максимальное число long
cout << numeric_limits<unsigned long>::min() << endl; //0 Минимальное число unsigned long
cout << numeric_limits<unsigned long>::max() << endl; //4294967295 Максимальное число unsigned long
cout << numeric_limits<long long>::min() << endl; //-9223372036854775808 Минимальное число long long
cout << numeric_limits<long long>::max() << endl; //9223372036854775807 Максимальное число long long
cout << numeric_limits<unsigned long long>::min() << endl; //0 Минимальное число unsigned long long
cout << numeric_limits<unsigned long long>::max() << endl; //18446744073709551615 Максимальное число unsigned long long
}
#include <iostream> // stoll(), stoull(), to_string()
#include <cstring> // strcpy()
int main(){
long long ln = std::stoll("15"); // const char* to long long
unsigned int uln = std::stoull("15"); // const char* to unsigned long long
const char* cch = "23"; // const char*
ln = std::stoll(cch); // const char* to long long
uln = std::stoull(cch); // const char* to unsigned long long
std::string str = "10"; // std::string
ln = std::stoll(str); // std::string to long long
uln = std::stoull(str); // std::string to unsigned long long
str = std::to_string(ln); // long long to std::string
cch = std::to_string(ln).c_str(); // long long to const char*
// Корректно преобразовывать const char* в char* можно только если полученная строка не будет меняться (будет readonly)
char* ch = (char*)std::to_string(ln).c_str(); // long long to char* C-style
ch = const_cast<char*>(std::to_string(ln).c_str()); // long long to char* C++ style
// Преобразование float в char* который можно изменять
str = std::to_string(ln); // long long to std::string
char* buf = new char[str.length() + 1]; // Создаем буфер достаточной длины
std::strcpy(buf, str.c_str()); // Преобразовываем std::string в const char* и копируем в char*
char c = ln; // long long to char
short s = ln; // long long to short
int i = ln; // long long to int
long l = ln; // long to long long
float f = ln; // long long to float
double d = ln; // long long to double
ln = c; // char to long long
ln = s; // short to long long
ln = i; // int to long long
ln = l; // long to long long
ln = f; // float to long long
ln = d; // double to long long
}