Основные типы данных

В языке С++ объявление переменных можно делать в любом месте программы.

int i; //объявление переменной и определение ее типа (declaration)
i=1; // инициализация (initialization)

int j=1; //объявление, определение, инициализация переменной
int i,j; //объявление нескольких переменных одного типа

При назначении типа данных для переменной определяются:

  1. объем памяти, отводимый для ее хранения;
  2. диапазон значений, который эта переменная может принимать.
Название типа (type) Ключевое слово (keyword) Размер (size) Диапазон значений (limits)
логический bool 1 byte true/false
символьный char 1 byte -128 ÷ 27
беззнаковый символьный unsigned char 1 byte 0 ÷ 255
широкий символный wchar_t 2 byte -32768 ÷ 32767
короткий целый short 2 bytes -32768 ÷ 32767
беззнаковый короткий целый unsigned short 2 bytes 0 ÷ 65535
целый int 4 bytes -2147483648 ÷ 2147483647
беззнаковый целый unsigned int 4 bytes 0 ÷ 4294967295
длинный целый long 4 bytes -2147483648 ÷ 2147483647
беззнаковый длинный целый unsigned long 4 bytes 0 ÷ 4294967295
вещественный float 4 bytes (±)1.175494351е–38 ÷ (±)3.402823466е+38
вещественный с двойной точностью double 8 bytes (±)2.2250738585072014е-308 ÷ (±)1.7976931348623158е+308
длинный вещественный long double 8 bytes (±)2.2250738585072014е-308 ÷ (±)1.7976931348623158е+308
пустой void

Поэтому к назначению типов переменных нужно подойти очень ответственно:

  1. чтобы программа во время выполнения не требовала большого объема памяти;
  2. чтобы значения, которые могут возникать при решении задачи не превышали диапазон, не возникало переполнение (overflow).

Во время работы при инициализации или присвоении значения переменной одного типа переменной другого типа может потребоваться операция преобразования типа переменной. При преобразовании (conversation) возможно расширение (повышение типа) и понижение типа.

float f=0.5f;
int i=(int)f; //понижение типа (операторная запись в стиле С)
double d=double(f); //повышение типа (функциональная запись в стиле С++)

Следует обратить внимание, на особые типы данных С++:

bool flag; //логический тип данных может принимать два значения (true/false)
wchar_t wchar; //двухбайтовый символьный тип данных (для работы в кодировке UNICODE)
void func(); //пустой тип данных (для создания функций не возвращающих значений и преобразования указателей)

Оператор sizeof позволяет определить размер памяти в байтах, необходимый для хранения переменной данного типа.

int i=sizeof(int); // i=4

При определении типов переменных используются несколько ключевых слов-модификаторов:

auto; //класс памяти автоматический
const; //неизменяемая величина
extern; //внешнее объявление
registr; //класс памяти регистровый
signed; //знаковый тип (используется по умолчанию)
static; //статическая переменная
unsigned; //беззнаковый тип
volatile; //неизменяемая величина внутри программы