C++ Типы переменных
Переменные — это на самом деле просто имена для областей памяти, с которыми может работать программа.
В C++ есть различные типы переменных, которые можно использовать для хранения разных видов данных.
В C++ каждая переменная имеет определённый тип. Тип определяет размер и расположение области хранения переменной, диапазон значений, которые могут храниться в памяти, и операторы, которые можно применять к переменной.
Имена переменных могут состоять из букв, цифр и символа подчёркивания. Они должны начинаться с буквы или символа подчёркивания.
Прописные и строчные буквы различаются, поскольку C++ чувствителен к регистру.
На основе базовых типов, объяснённых в предыдущей главе, существуют следующие базовые типы переменных, которые будут объяснены в следующей главе:
| Type | Описание |
|---|---|
| bool | Логический тип, хранит значение true или false, занимает 1 байт. |
| char | Символьный тип, используется для хранения символов ASCII, обычно занимает 1 байт. |
| int | Целочисленный тип, обычно используется для хранения обычных целых чисел, как правило, занимает 4 байта. |
| float | Значение с плавающей запятой одинарной точности, используется для хранения чисел с плавающей запятой одинарной точности. Одинарная точность имеет формат: 1 бит знака, 8 бит экспоненты, 23 бита мантиссы, обычно занимает 4 байта.
|
| double | Значение с плавающей запятой двойной точности, используется для хранения чисел с плавающей запятой двойной точности. Двойная точность имеет 1 бит знака, 11 бит экспоненты, 52 бита мантиссы, обычно занимает 8 байт.
|
| void | Представляет отсутствие типа. |
| wchar_t | Тип широких символов, используется для хранения более широкого диапазона символов, обычно занимает 2 или 4 байта. |
C++ также позволяет определять переменные различных других типов, таких какперечисления, указатели, массивы, ссылки, структуры данных, классыи т. д., что будет объяснено в следующих главах.
Целочисленные типы:
int: Используется для представления целых чисел, обычно занимает 4 байта.short: Используется для представления коротких целых чисел, обычно занимает 2 байта.long: Используется для представления длинных целых чисел, обычно занимает 4 байта.long long: Используется для представления более длинных целых чисел, обычно занимает 8 байт.
Типы с плавающей запятой:
float: Используется для представления чисел с плавающей запятой одинарной точности, обычно занимает 4 байта.double: Используется для представления чисел с плавающей запятой двойной точности, обычно занимает 8 байт.long double: Используется для представления чисел с плавающей запятой повышенной точности; количество занимаемых байтов может зависеть от реализации.
Символьные типы:
char: Используется для представления символов, обычно занимает 1 байт.wchar_t: Используется для представления широких символов, обычно занимает 2 или 4 байта.char16_t: Используется для представления 16-битных символов Unicode, занимает 2 байта.char32_t: Используется для представления 32-битных символов Unicode, занимает 4 байта.
Логический тип:
boolИспользуется для представления логических значений, может принимать толькоtrueилиfalse。
Перечислимые типы:
enum: Используется для определения набора именованных целочисленных констант.
Типы указателей:
type*Используется для представления указателей на типtypeуказатель на объект.
Типы массивов:
type[]илиtype[size]: Используется для определения массива, состоящего из элементов одного типа.
Типы структур:
struct: Используется для определения структуры, содержащей несколько членов разных типов.
Типы классов:
class: Используется для определения пользовательского типа с атрибутами и методами.
Типы объединений:
union: Используется для определения специального типа данных, который может хранить разные типы данных в одной и той же области памяти.
В C++ длина типа (то есть количество байтов, которое он занимает) зависит от компилятора и архитектуры компьютера. Однако стандарт C++ определяет минимальные диапазоны для различных целочисленных типов, а не конкретное количество байтов, чтобы гарантировать корректную работу кода в разных системах.
Обратите внимание, что диапазоны вышеуказанных типов — это лишь минимальные требования, указанные стандартом C++. На практике во многих системах эти типы могут занимать больше байтов. Например, на многих современных компьютерах int обычно занимает 4 байта, а long может занимать 8 байтов.
Далее мы объясним, как определять, объявлять и использовать переменные различных типов.
Определение переменной в C++
Определение переменной сообщает компилятору, где и как выделить память для переменной.

Определение переменной задаёт тип данных и содержит список из одной или нескольких переменных этого типа, как показано ниже:
type variable_list;
Здесьtypeдолжен быть допустимым типом данных C++; это может быть char, wchar_t, int, float, double, bool или любой пользовательский объект,variable_listможет состоять из одного или нескольких имён идентификаторов, причём несколько идентификаторов разделяются запятыми. Несколько допустимых объявлений приведены ниже:
lineint i, j, k;объявляет и определяет переменные i, j и k, что указывает компилятору создать переменные с именами i, j, k типа int.
Переменные можно инициализировать (присвоить начальное значение) во время объявления. Инициализатор состоит из знака равенства, за которым следует константное выражение, как показано ниже:
Вот несколько примеров:
Определения без инициализации: переменные со статической продолжительностью хранения неявно инициализируются значением NULL (все значения байтов равны 0), а начальные значения всех остальных переменных не определены.
Объявление переменной в C++
Объявление переменной гарантирует компилятору, что переменная существует с заданным типом и именем, так что компилятор может продолжать компиляцию, не нуждаясь в полных сведениях о переменной. Объявление переменной имеет смысл только во время компиляции; во время компоновки программы компилятору требуется фактическое определение переменной.
Когда вы используете несколько файлов и определяете переменную только в одном из них (файл, определяющий переменную, доступен во время компоновки программы), объявления переменных становятся очень полезными. Вы можете использовать ключевое словоextern, чтобы объявить переменную где угодно. Хотя в программе на C++ переменную можно объявлять несколько раз, переменная может быть определена только один раз в файле, функции или блоке кода.
Пример
Попробуйте следующий пример, где переменные объявлены в начале, но они определены и инициализированы внутри функции main:
Пример
Когда приведённый выше код компилируется и выполняется, он выдаёт следующий результат:
30 23.3333
Аналогично, при объявлении функции вы указываете имя функции, а фактическое определение функции может быть размещено где угодно. Например:
Lvalues и Rvalues в C++
В C++ существует два типа выражений:
- lvalue:Выражение, которое ссылается на ячейку памяти, называется выражением lvalue. Lvalue может находиться слева или справа от оператора присваивания.
- rvalue:Термин rvalue обозначает значение, хранящееся по некоторому адресу в памяти. Rvalue — это выражение, которому нельзя присвоить значение; то есть rvalue может находиться справа от оператора присваивания, но не может находиться слева.
Переменные являются lvalue, поэтому они могут находиться слева от оператора присваивания. Числовые литералы являются rvalue, поэтому им нельзя присвоить значение и они не могут находиться слева от оператора присваивания. Следующая инструкция является допустимой:
int g = 20;
Но следующая инструкция не является допустимой и вызовет ошибку времени компиляции:
10 = 20;Другие расширения

