Что такое литералы?

В следующем примере 1 и Кот это литералы, а a1, c и cat — переменные:

int a1 = 1;
int c = a1;
string cat = "Кот";

Если "Литерал" это фиксированное значение, то зачем это терминология когда есть термин "константа" ?


Ответы (2 шт):

Автор решения: CrazyElf

Потому что в программировании константа - это переменная с фиксированнным значением.

В то же время и само значение такой переменной - это в общем-то тоже константа.

Видимо, поэтому, чтобы избежать неоднозначности толкования - о чём же мы всё-таки говорим, когда в программировании произносим термин константа - ввели термин литерал.

Поэтому в программировании обычно понимают так:

  • константа - это переменная, содержащая фиксированное значение (нонсенс, если подумать - "переменная" и в то же время "фиксированная", но так сложилось)
  • литерал - это само фиксированное значение, которое присваивается переменной-константе или ещё каким-то образом используется в программе (в общем-то не обязательно его куда-то присваивать)
→ Ссылка
Автор решения: Zhihar

константа и литерал - это разные сущности

константа - это данные, которые нельзя изменять

а литералы - это некоторые числовые или цифровые префиксы и суффиксы, которые описывают данные, хранящиеся в переменных и константах

const float pi = 3.1415; // pi - константа

const float pi = 3.1415f // f - литерал, показывающий, что число 3.1415 имеет тип float

или например в C++11 появились литералы для времени -

auto delta = 250ms;

ms - это литерал

т.е. когда вы используете const - вы говорите компилятору, что значение данной переменной не может быть изменено напрямую (обходы есть, но сейчас не об этом)

а когда вы используете литералы, то вы говорите компилятору как именно интерпретировать данные, которые вы записываете в переменную

→ Ссылка