Переменные и типы данных в C++: подробное руководство по int, double, char, string, bool
Переменные в C++
В C++ переменная — это именованная область памяти, позволяющая программисту хранить и обрабатывать данные. У каждой переменной есть явный тип, определяющий её размер в памяти, диапазон допустимых значений и допустимые операции.
В этом руководстве рассматриваются:
- Переменные в C++
- Основные типы переменных
- Правила объявления
- Иерархия типов данных
- Идентификаторы и соглашения об именовании
- Квалификатор
const - Правила области видимости
- Неявное и явное преобразование типов
- Регистровые переменные
- Комментарии и escape-последовательности
Основные типы переменных
int — целые числа без дробной части (например, 120, -90).
double — числа с плавающей точкой двойной точности (например, 11.22, 2.345).
char — одиночные символы в одинарных кавычках (например, 'a', 'm', 'F', '}', '7').
float — числа с плавающей точкой одинарной точности (например, 1.3f, 2.6f).
string — последовательность символов в двойных кавычках (например, "How are you?"). Требует #include <string>.
bool — логический тип, принимает значения true или false.
Правила объявления переменных
- Имена могут содержать буквы, цифры и подчёркивания.
- Не могут начинаться с цифры.
- Соглашение: переменные — в нижнем регистре (
snake_caseилиcamelCase), константы — в верхнем (MAX_SIZE). - Имена не должны совпадать с ключевыми словами языка (например,
int). - Начинать имя с подчёркивания допускается, но не рекомендуется (зарезервировано для реализации).
Типы данных переменных в C++
C++ предоставляет богатый набор примитивных типов. Тип void не имеет значения и обычно используется как возвращаемый тип функции, которая ничего не возвращает.
Арифметические типы делятся на две категории:
- Типы с плавающей точкой:
float(≈32 бита),double(≈64 бита),long double(≈80/96/128 бит в зависимости от реализации). - Целочисленные типы: целые числа, символы и
bool. Могут быть знаковыми (signed) или беззнаковыми (unsigned).
Знаковые типы представляют отрицательные, нулевые и положительные значения. Например, 8-битный знаковый char диапазона от –128 до 127.
Беззнаковые типы хранят только неотрицательные значения. 8-битный беззнаковый char — от 0 до 255.

Имена переменных (идентификаторы)
Идентификаторы могут содержать буквы, цифры и подчёркивания. Длина не ограничена, учитывается регистр:
int guru99, gurU99, GuRu99, GURU99;
Ключевые слова не могут использоваться как идентификаторы. Чёткие соглашения об именовании повышают читаемость: переменные — в нижнем регистре, составные имена — camelCase или snake_case, классы — с заглавной буквы (PascalCase).

Примеры объявления и определения
int a = 5;
int b;
char c = 'A';
int a, b;
a = b = 1000;
int a(5); // инициализация в стиле конструктора
int b{5}; // унифицированная инициализация (C++11)
Квалификатор const
Используйте const, когда значение не должно меняться после инициализации:
const int bufSize = 512; // размер входного буфера
Переменная const обязана быть инициализирована; иначе компилятор выдаст ошибку.
const int i = get_size(); // OK: инициализация во время выполнения const int j = 42; // OK: константа времени компиляции const int k; // ошибка: неинициализированная const const int i = 42; const int ci = i; // OK: копия i
Область видимости переменных
Область видимости определяет, где имя доступно. Переменные видны от точки объявления до конца окружающего блока.
#include <iostream>
int main() {
int sum = 0;
for (int val = 1; val <= 10; ++val)
sum += val;
std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
mainимеет глобальную область (в пределах файла).sumимеет блочную видимость внутриmain.valимеет локальную видимость внутри циклаfor.
Вложенные области видимости
#include <iostream>
using namespace std;
int reused = 42; // глобальная область
int main() {
int unique = 0; // блочная область
cout << reused << " " << unique << endl; // 42 0
int reused = 0; // локальная переменная скрывает глобальную
cout << reused << " " << unique << endl; // 0 0
cout << ::reused << " " << unique << endl; // 42 0 (доступ к глобальной через ::)
return 0;
}
Преобразование типов переменных
C++ выполняет неявные преобразования при определённых условиях. Основные правила:
- Не-bool в bool: 0 становится
false, любое другое значение —true.bool b = 42; // b равно true
- bool в арифметический:
trueстановится 1,false— 0.bool b = true; int i = b; // i равно 1
- Плавающая точка в целое: отбрасывается дробная часть (усечение к нулю).
int i = 3.14; // i равно 3
- Целое в плавающую точку: дробная часть теряется (если значение не помещается точно).
int i = 3; double pi = i; // pi равно 3.0
- Переполнение беззнаковых: значение берётся по модулю основания.
unsigned char c = -1; // 255 для 8-битного char
- Переполнение знаковых: неопределённое поведение (Undefined Behavior).
При смешивании знаковых и беззнаковых целых отрицательные знаковые значения могут неожиданно превратиться в большие беззнаковые.
Регистровые переменные
Ключевое слово register подсказывает компилятору хранить часто используемую переменную в регистре процессора. Современные компиляторы обычно игнорируют эту подсказку, выполняя собственную оптимизацию.
register int i;
Комментарии
Комментарии игнорируются компилятором и служат для документирования кода:
- Однострочные — начинаются с
//. - Многострочные — ограничены
/* ... */.
/* Это комментарий */ /* C++ комментарии могут занимать несколько строк */
Escape-последовательности
Escape-последовательности представляют непечатные или специальные символы:
| Escape | Описание |
|---|---|
| \n | Новая строка |
| \t | Горизонтальная табуляция |
| \\ | Обратный слэш |
| \b | Backspace |
| \r | Возврат каретки |
| \v | Вертикальная табуляция |
| \f | Перевод страницы |
| \a | Звонок (bell) |
| \" | Двойная кавычка |
| \' | Одинарная кавычка |
| \? | Вопросительный знак |
cout << '\n'; // новая строка cout << "\tguru99!\n"; // таб + текст + новая строка
Обобщённые последовательности используют шестнадцатеричные или восьмеричные значения:
\7 // bell (восьмеричное) \12 // новая строка (восьмеричное) \40 // пробел (восьмеричное) \x4D // 'M' (шестнадцатеричное)
Резюме
- Переменные обеспечивают именованное хранение и типизированы.
- Основные типы:
int,double,char,float,string,bool. - Область видимости определяет доступность; вложенные области могут скрывать имена.
- Неявные и явные преобразования существуют, но требуют осторожности.
- Подсказка
registerможет улучшить производительность, но является советом. - Комментарии и escape-последовательности помогают читаемости и корректному выводу.
Язык C
- Мастерство C# переменных и примитивных типов данных: полное руководство
- Освоение переменных, литералов и констант в C++: подробное руководство
- Понимание типов данных C++: основы, модификаторы и лучшие практики
- Переменные, константы и литералы в C: полное руководство
- Типы данных в C: int, float, char и другие — полное руководство
- Четыре проверенных паттерна пользовательских функций в C
- Классы хранения в C: область видимости, время жизни и производительность
- Операторы в C++: типы, примеры и практические программы
- Типы переменных в Java: локальные, экземпляра и статические
- Переменные в C: объявление, определение, инициализация, область видимости и классы хранения