Типы переменных в C++: память, ограничения и операции
Переменная предоставляет именованное хранилище, которое программы могут манипулировать. У каждой переменной в C++ есть конкретный тип, определяющий размер и компоновку памяти переменной; диапазон значений, которые можно в ней хранить; и набор операций, применимых к переменной.
Имя переменной может состоять из букв, цифр и подчёркивания. Должно начинаться с буквы или подчёркивания. Заглавные и строчные буквы различаются, так как C++ чувствителен к регистру.
В C++ есть следующие базовые типы переменных:
| № | Тип и описание |
|---|---|
| 1 | bool Хранит значение true или false. |
| 2 | char Обычно один октет (один байт). Это целочисленный тип. |
| 3 | int Самый естественный размер целого для данной машины. |
| 4 | float Значение с плавающей точкой одинарной точности. |
| 5 | double Значение с плавающей точкой двойной точности. |
| 6 | void Представляет отсутствие типа. |
| 7 | wchar_t Тип широкого символа. |
C++ также позволяет определять другие типы переменных: перечисления, указатели, массивы, ссылки, структуры данных и классы.
Далее рассматривается определение, объявление и использование переменных разных типов.
Определение переменной в C++
Определение переменной сообщает компилятору, где и сколько памяти создать для переменной. Определение указывает тип данных и содержит список одной или нескольких переменных этого типа:
тип список_переменных;
Здесь тип — любой допустимый тип C++ (char, wchar_t, int, float, double, bool или пользовательский), а список_переменных — одно или несколько имён через запятую. Примеры:
int i, j, k; char c, ch; float f, salary; double d;
Строка int i, j, k; одновременно объявляет и определяет переменные i, j, k типа int.
Переменные можно инициализировать (присвоить начальное значение) при объявлении. Инициализатор — знак равенства и константное выражение:
тип имя_переменной = значение;
Примеры:
extern int d = 3, f = 5; // объявление d и f int d = 3, f = 5; // определение и инициализация d и f byte z = 22; // определение и инициализация z char x = 'x'; // переменная x имеет значение 'x'
Для определения без инициализатора: переменные со статической длительностью хранения неявно инициализируются NULL (все байты = 0); начальное значение остальных переменных не определено.
Объявление переменной в C++
Объявление переменной гарантирует компилятору, что существует переменная с данным типом и именем, чтобы компилятор мог продолжить компиляцию без полных деталей. Объявление имеет смысл только на этапе компиляции; компилятору нужно фактическое определение на этапе компоновки.
Объявление полезно при использовании нескольких файлов: вы определяете переменную в одном файле, который будет доступен при компоновке. Для объявления переменной в любом месте используется ключевое слово extern. Переменную можно объявлять много раз, но определять — только один раз в файле, функции или блоке кода.
Пример
Пример: переменная объявлена вверху, но определена внутри main:
#include <iostream>
using namespace std;
// Объявление переменных:
extern int a, b;
extern int c;
extern float f;
int main() {
// Определение переменных:
int a, b;
int c;
float f;
// фактическая инициализация
a = 10;
b = 20;
c = a + b;
cout << c << endl;
f = 70.0/3.0;
cout << f << endl;
return 0;
}
Результат компиляции и выполнения:
30 23.3333
То же самое относится к объявлению функций: вы даёте имя функции при объявлении, а фактическое определение можно дать где угодно. Например:
// объявление функции
int func();
int main() {
// вызов функции
int i = func();
}
// определение функции
int func() {
return 0;
}
Lvalues и Rvalues
В C++ есть два вида выражений:
lvalue — выражения, ссылающиеся на ячейку памяти. Lvalue может стоять слева или справа от присваивания.
rvalue — термин для значения данных, хранящегося по какому-то адресу в памяти. Rvalue — выражение, которому нельзя присвоить значение, то есть оно может стоять только справа от присваивания.
Переменные — это lvalues, поэтому могут стоять слева от присваивания. Числовые литералы — rvalues, их нельзя присваивать и они не могут стоять слева. Допустимый оператор:
int g = 20;
А следующий недопустим и вызовет ошибку компиляции:
10 = 20;
Язык C
- Освоение операторов C++: полное руководство с практическими примерами
- Примитивные типы данных в Java: полное руководство с примерами
- Переменные и типы данных в C++: подробное руководство по int, double, char, string, bool
- Операторы в C++: типы, примеры и практические программы
- Указатели в C++: концепции, примеры и практические применения
- Тип данных char в C++: объявление, ASCII и методы преобразования
- Указатели в C: полное руководство по типам, использованию и лучшим практикам
- Типы переменных в Java: локальные, экземпляра и статические
- Переменные в C: объявление, определение, инициализация, область видимости и классы хранения
- Типы переменных в C++: память, ограничения и операции