Статья Автор: Деникина Н.В., Деникин А.В.

Литералы

Рассмотрим следующие два выражения:

std::cout << "Hello world!";
int x{ 5 };

Что такое ''Hello world!'' и ''5''? Это литералы. Литерал (также известный как литеральная константа) - это фиксированное значение, которое было вставлено непосредственно в исходный код.

Литералы и переменные имеют значение (и тип). В отличие от переменной (значение которой можно задавать и изменять с помощью инициализации и присваивания соответственно), значение литерала фиксировано (5 всегда равно 5).

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

#include 

int main()
{
    std::cout << 5 << '\n'; // вывести значение литерала

    int x { 5 };
    std::cout << x << '\n'; // вывести значение переменной
    return 0;
}

В строке 5 мы выводим на консоль значение 5. Когда компилятор скомпилирует эту программу, он сгенерирует код, который заставит std::cout вывести значение 5. Это значение 5 компилируется в исполняемый файл и может быть использовано напрямую.

В строке 7 мы создаем переменную с именем x и инициализируем ее значением 5. Компилятор сгенерирует код, который скопирует литеральное значение 5 в любую область памяти, заданную для x. В строке 8, когда мы печатаем x, компилятор сгенерирует код, который заставит std::cout вывести значение в области памяти x (которое имеет значение 5).

Таким образом, оба оператора вывода делают одно и то же действие (печатают значение 5).

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

Это также объясняет, почему литерал постоянен, а переменная может быть изменена. Значение литерала помещается непосредственно в исполняемый файл, и сам файл не может быть изменен после его создания. Значение переменной помещается в память, и значение в памяти может быть изменено во время работы исполняемого файла.

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