Целочисленные типы С++ long и long long

Тип 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
}

Преобразования типов long и 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
}
2023-10-22



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

char символьный тип данных в С++ длиной 1 байт
char16_t символьный беззнаковый тип данных длиной 16 бит в С++11
char32_t символьный беззнаковый тип данных длиной 32 бит в С++11
char8_t символьный тип данных в С++20
Типы данных C++
double - тип данных для представления вещественных чисел двойной точности
enum перечисление С++
float C++ представление вещественных данных с одинарной точностью
int C++ целочисленный тип данных
Целочисленные типы С++ long и long long
short С++ целочисленный тип данных
signed C++ модификатор знакового целочисленного типа
typedef C++ создание псевдонимов для типов данных
typeid C++ определение типа данных
union C++ объединение переменных разных типов в общей памяти
unsigned С++ беззнаковые числа
void C++ для функций не возвращающих значений или задания пустого указателя
wchar_t С++ расширенный набор символов и строк