Advertisement
RobertDeMilo

YB1.1 Введение в целочисленные типы

Oct 27th, 2023
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdint>
  4. #include <limits>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     //vector<int> t = { -8, -7, 3 };
  11.     //int sum = 0;
  12.     //for (int x : t)
  13.     //{
  14.     //  sum += x;
  15.     //}
  16.     //int avg = sum / t.size();
  17.  
  18.     //cout << avg << endl;
  19.  
  20.     ////t.size() - это специальный тип, который не умеет хранить отрицательные числа (беззнаковый тип)
  21.  
  22.     //*********************************************************
  23.  
  24.     int x = 2'000'000'000;
  25.    cout << x << " ";
  26.    x *= 2;
  27.    cout << x << " "; // 4 млрд в переменную типа int не поместилось
  28.  
  29.  
  30.    //****************************************
  31.  
  32.    cout << sizeof(int16_t) << endl; // 16:8 = 2 размер в байтах  (16 бит - 2 байта)
  33.    cout << sizeof(int) << endl;
  34.  
  35.    int y;
  36.    cout << sizeof(y) << endl;
  37.  
  38.    cout << numeric_limits<int>::min() << " "
  39.         << numeric_limits<int>::max() << endl;
  40.  
  41.    cout << sizeof(long int) << endl;
  42.    cout << numeric_limits<long int>::min() << " "
  43.         << numeric_limits<long int>::max() << endl;
  44.  
  45.    //Особенности целочисленных типов:
  46.  
  47.        //1 Память для целочисленных типов ограничена
  48.        //2 У них ограниченный диапазон значений
  49.        //3 Некоторые целочисленные типы беззнаковые (экономия на отрицательных числах)
  50.  
  51.        // int стандартный целочисленный тип
  52.        // как правило, имеет размер 4 байта (32 бита)
  53.        // и диапазон от -2^31 до 2^31 - 1     !!!!примерно 2 млрд!!!!!
  54.        // в конечном счете размер зависит от архитектуры
  55.  
  56.    // Классические беззнаковые типы:
  57.  
  58.        // unsigned int(unsigned) - беззнаковый аналог int
  59.        // как правило, имеет размер 4 байта
  60.        // и диапазон от 0 до 2^32 - 1     !!!!примерно 4 млрд!!!!!
  61.  
  62.        // size_t - тип для представления размеров
  63.        // результат вызова size() для контейнера
  64.        // 4 байта (до 2^32 - 1)  или 8 байт (до 2^64 - 1)
  65.  
  66.    // Типы с известным размером:
  67.    // #include<cstdint>
  68.  
  69.        // int32_t - знаковый, всегда 32 бита
  70.        // от -2^31 до 2^31 - 1
  71.  
  72.        // uint32_t - беззнаковый, всегда 32 бита
  73.        // от 0 до 2^32 - 1
  74.  
  75.        // int8_t // uint8_t - 8 бит
  76.        // int16_t // uint16_t - 16 бит
  77.        // int64_t // uint64_t - 64 бит
  78.  
  79.                    //Сводная таблица типов
  80.                    
  81.    // тип               размер        минимум      максимум
  82.    //
  83.    // int            4(обычно)       -2^31       2^31 - 1 (2млрд)
  84.    // unsigned int   4(обычно)         0         2^32 - 1 (4млрд)
  85.    // size_t          4 или 8          0         2^32 - 1 или 2^64 - 1
  86.    // int8_t             1           -2^7        2^7 - 1  (128 - 1)
  87.    // int16_t            2           -2^15       2^15 - 1 (32 768 - 1)
  88.    // int32_t            4           -2^31       2^31 - 1 (2млрд)
  89.    // int64_t            8           -2^63       2^63 - 1 (9,223372 × 10^18)
  90.    //
  91.    // uint8_t            1             0         2^8 - 1  (256)
  92.    // uint16_t           2             0         2^16 - 1 (65 536)
  93.    // uint32_t           4             0         2^32 - 1 (4млрд)
  94.    // uint64_t           8             0         2^64 - 1 (1,8446744 × 10^19)
  95.    
  96.  
  97.    return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement