Основные типы данных
В языке С++ объявление переменных можно делать в любом месте программы.
int i; //объявление переменной и определение ее типа (declaration)
i=1; // инициализация (initialization)
int j=1; //объявление, определение, инициализация переменной
int i,j; //объявление нескольких переменных одного типа
При назначении типа данных для переменной определяются:
- объем памяти, отводимый для ее хранения;
- диапазон значений, который эта переменная может принимать.
Название типа (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 | – | – |
Поэтому к назначению типов переменных нужно подойти очень ответственно:
- чтобы программа во время выполнения не требовала большого объема памяти;
- чтобы значения, которые могут возникать при решении задачи не превышали диапазон, не возникало переполнение (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; //неизменяемая величина внутри программы