В Cpp имеется множество встроенных типов данных и некоторые модификаторы, которые позволяют нам изменять характеристики типа данных по размеру и допустимому диапазону. В следующих строках мы запишем некоторые основные правила, которые следует учитывать при работе с типами данных.

Размеры

  • char: всегда имеет длину 8 бит.
  • wchar_t: гарантированно содержит любой символ машины
  • int: имеет размер не меньше short
  • long: имеет размер не меньше int
  • long long: по размеру не меньше long.
  • float: обычно представляет собой одно слово.
  • double: состоит из двух слов.
  • long double: состоит из трех или четырех слов.
#include <cstdlib>      // EXIT_SUCCESS macro 
#include <iostream>     // cout 
#include <typeinfo>     // typeid 
 
#define GET_VAR_NAME(var) (#var) 
 
/*---------------------------------------------------------------------------*/ 
 
static void PrintInfo(const size_t data_type_size, const char *data_type_name,  
                        const char *var_name) 
{ 
        std::cout << "\tbyte size: " << data_type_size 
                  << "\tname: " << data_type_name 
                  << "\tvar: " << var_name 
                  << std::endl; 
} 
 
/*---------------------------------------------------------------------------*/ 
 
int main() { 
 
        char            chr_var; 
        short           sht_var; 
        int             int_var; 
        long int        lng_int_var; 
        long long int   lng_lng_int_var; 
        float           flt_var; 
        double          dbl_var; 
        long double     lng_dbl_var; 
 
        PrintInfo(sizeof(chr_var), typeid(chr_var).name(),  
                        GET_VAR_NAME(chr_var)); 
        PrintInfo(sizeof(sht_var), typeid(sht_var).name(),  
                        GET_VAR_NAME(sht_var)); 
        PrintInfo(sizeof(int_var), typeid(int_var).name(),  
                        GET_VAR_NAME(int_var)); 
        PrintInfo(sizeof(lng_int_var), typeid(lng_int_var).name(),  
                        GET_VAR_NAME(lng_int_var)); 
        PrintInfo(sizeof(lng_lng_int_var), typeid(lng_lng_int_var).name(),  
                        GET_VAR_NAME(lng_lng_int_var)); 
        PrintInfo(sizeof(flt_var), typeid(flt_var).name(),  
                        GET_VAR_NAME(flt_var)); 
        PrintInfo(sizeof(dbl_var), typeid(dbl_var).name(),  
                        GET_VAR_NAME(dbl_var)); 
        PrintInfo(sizeof(lng_dbl_var), typeid(lng_dbl_var).name()…