Объявление переменных

Объявление переменной в языке C++ в общем случае делается используя следующий синтаксис:

<тип> <имя_переменной>[, <имя_переменной>]...;

где

  • <тип> - это дип данных, который будет использоваться для всех указанных переменных
  • <имя_переменной> - символьное имя переменной

Правила именования переменных:

  • имя переменной может состоять только из латинских букв, цифр и символа подчеркивания
  • прописные и строчные буквы в именах различаются, то есть переменные abc и Abc - разные переменные
  • имя переменной не может начинаться с цифры
  • имя переменной не может повторяться, то есть нельзя объявить две переменные с одним именем
  • в качестве имени переменной не могут использоваться ключевые слова языка C++. Список таких слов следующий: alignas, alignof, asm, auto, bool, break, case, catch, char, char16_t, char32_t, class, const, constexpr, const_cast, continue, decltype, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutubale, namespace, new, noexcept, nullptr, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while.

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

Пример кода:

int a;
float b, c;
char str_v1, d, e;

Инициализация переменных

Инициализация переменной - это объявление переменной, с одновременным присваиванием ей какого-то значения.

В C++ существует три типа инициализации:

  • копирующая инициализация
  • прямая инициализация
  • универсальная инициализация (C++ 11)

Копирующая инициализация

<тип> <имя_переменной>[ = <значение>][, <имя_переменной>[ = <значение>]]...;

Пример кода:

int a = 0, b, c = 12;      // инициализированы переменные a и c
float f = 1.2f, e;         // инициализирована только переменная f, у переменной e - неопределенное значение
double g, d = 3.145;       // инициализирована только переменная d, у переменной g - неопределенное значение

При объявлении переменных можно инициализировать не все переменные. Если переменная не инициализируется, ее значение будет неопределенным.

Прямая инициализация

<тип> <имя_переменной>[ (<значение>][, <имя_переменной>[ (<значение>]]...;

Пример кода:

int a(1), b, c(3), d;      // инициализированы переменные a и c

Универсальная инициализация

Прямая или копирующая инициализация работают не со всеми типами данных (например, вы не сможете использовать эти способы для инициализации списка значений). В попытке обеспечить единый механизм инициализации, который будет работать со всеми типами данных, в C++11 добавили новый способ инициализации.

<тип> <имя_переменной>[ {<значение>][, <имя_переменной>[ {<значение>]]...;

Пример кода:

int a{ 1 }, b, c{ 3 }, d;      // инициализированы переменные a и c
int e{};    // переменная инициализируется значением по-умолчанию для типа, в данном случае 0

При использовании универсальной инициализации, если переменная инициализируется значением другого типа, то на этапе компиляции программы генерируется ошибка.

Пример кода:

int a = 4.5;   // предупреждение при компиляции
int b(4.5);    // предупреждение при компиляции
int c{4.5};    // ошибка компиляции