Переменные


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

Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит следующим образом:

тип_переменной имя_переменной;
Простейшее определение переменной:

int age;
Здесь определена переменная age, которая имеет тип int. Поскольку определение переменной представляет собой инструкцию, то после него ставится точка с запятой.

Также стоит учитывать, что C++ - регистрозависимый язык, а это значит, что регистр символов имеет большое значение. То есть в следующем коде будут определяться две разные переменные:

int age;
int Age;
Поэтому переменная Age не будет представлять то же самое, что и переменная age.

Кроме того, в качестве имени переменной нельзя использовать ключевые слова языке C++, например, for или if. Но таких слов не так много: 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.

Также нельзя объявить больше одной переменной с одним и тем же именем, например:

int age;
int age;
Подобное определение вызовет ошибку на этапе компиляции.

И в довершеие следует сказать, что переменным стоит давать осмысленные имена, которые будут говорить об их предназначении.

Инициализация
После определения переменной можно присвоить некоторое значение:

int age;
age = 20;
Например, определим в прогамме переменную и выведем ее значение на консоль:

#include <iostream>

int main()
{
int age;
age = 28;
std::cout<<"Age = " << age;
return 0;
}
С помощью последовательности операторов << можно вывести несколько значений на консоль.

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

Однако также можно сразу при определении переменной дать ей некоторое начальное значение. Данный прием называется инициализацией, то есть присвоение переменной начального значения:

#include <iostream>

int main()
{
int age = 28;
std::cout<<"Age = " << age;
return 0;
}
Инициализация по умолчанию
Если переменную не инициализировать, то происходит ее инициализация по умолчанию. И переменная получает некоторое значение по умолчанию, которое зависит от места, где эта переменная определена.

Если переменная, которая представляет встроенный тип (например, тип int), определена внутри функции, то она получает неопределенное значение. Если переменная встроенного типа определена вне функции, то она получает то значение по умолчанию, которое соответствует ее типу. Для числовых типов это число 0. Например:

#include <iostream>

int x;
int main()
{
int y;
std::cout <<"X = " << x << "\n";
std::cout <<"Y = " << y;

return 0;
}
Переменная x определена вне функции, и поэтому она получит значение по умолчанию - число 0.

Гораздо сложнее дело обстоит с переменной y, которая определена внутри функции main - ее значение будет неопределенным, и многое будет зависеть от используемого компилятора. В частности, вывод программы, скомпилированной с помощью компилятора G++, может выглядеть следующим образом:

X = 0
Y = 4200475
А в Visual Studio отсутствие значения переменной y вызовет ошибку.

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

Изменение значения
Ключевой особенностью переменных является то, что мы можем изменять их значения:

#include <iostream>

int main()
{
int x = 6;
x = 8;
x = 10;
std::cout <<"X = " << x; // X = 10

return 0;
}