Что означает слово "буквальный"?

Что означает слово "буквальный" при использовании в контексте, таком как литеральные строки и литеральные значения?

В чем разница между литеральным значением и значением?

Ответ 1

Литерал - это "любая запись для , представляющая значение в исходном коде" (wikipedia)

(Контрастируйте это с помощью идентификаторов, которые относятся к значению в памяти.)

Примеры:

  • "hey" (строка)
  • false (boolean)
  • 3.14 (действительное число)
  • [1,2,3] (список номеров)
  • (x) => x*x (функция)
  • /^1?$|^(11+?)\1+$/ (regexp)

Некоторые вещи, которые не являются литералами:

  • std::cout (идентификатор)
  • foo = 0; (инструкция)
  • 1+2 (выражение)

Ответ 2

Литерал - это значение, которое было жестко закодировано непосредственно в вашем источнике.

Например:

string x = "This is a literal";
int y = 2; // so is 2, but not y
int z = y + 4; // y and z are not literals, but 4 is
int a = 1 + 2; // 1 + 2 is not a literal (it is an expression), but 1 and 2 considered separately are literals

Некоторые литералы могут иметь специальный синтаксис, поэтому вы знаете, какой тип литерала:

//The 'M' in 10000000M means this is a decimal value, rather than int or double.
var accountBalance = 10000000M; 

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

Ответ 3

Литерал - это назначение явного значения, например

int i = 4;  // i is assigned the literal value of '4'
int j = i   // j is assigned the value of i.  Since i is a variable,  
            //it can change and is not a 'literal'

EDIT: Как указано, само присваивание не имеет ничего общего с определением литерала, я использовал назначение в моем примере, но литерал также может быть передан в метод и т.д.

Ответ 4

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

Литерал может быть числом, символом или строкой. Например, в выражении

x = 3

x - переменная, а 3 - литерал.

Ответ 5

Литерал - это когда вы включаете значение в исходный код (в отличие от ссылки на переменную или константу). Например:

int result = a + 5; // a is a variable with a value, 5 is a literal

string name = "Jeff Atwood"; // name is a variable initialized
                             // with the string literal, "Jeff Atwood"

int[] array = new int[] {1, 2, 3}; // C# has array literals (this is actually three
                                   // int literals within an array literal)

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

const int maxUsers = 100;
const double gravitationalAcceleration = 9.8;

Как правило, единственные числовые литералы, которые я использую (кроме инициализации констант, как указано выше), равны 0 или 1, а иногда и 2, если я пропускаю каждый другой элемент в цикле. Если значение числа более важно, чем его фактическое значение (оно обычно есть), его лучше назвать.

Ответ 6

Литеральное значение - это значение, но значение также может быть сохранено в переменной. В заявлении

string str = "string literal";

есть строковая переменная (str) и строковый литерал. После выполнения оператора оба значения имеют одинаковое значение.

Помните, что во многих языках переменная и буквальное значение необязательно должны быть одинаковыми. Например:

int a = 1.0;

Литеральное значение выше - тип с плавающей точкой. Значение будет принудительно компилятором, чтобы вписаться в переменную int.

В другом примере, в первой строке кода на С++ выше тип строкового литерала вообще не является типом библиотеки string. Чтобы поддерживать обратную совместимость с C, строковые литералы на С++ являются char массивами.

Ответ 7

Быстрый пример:

int my_int_var = 723;

723 - Этот набор символов относится к целочисленному значению буквальное.

my_int_var - этот набор символов относится к целочисленному значению переменной.

Ответ 8

Литерал - это когда вы помещаете его в код. Таким образом, строковый литерал

string s = "SomeText";

Это в отличие от построения строки или принятия ее в качестве параметра.

Ответ 9

Обычно, когда кто-то использует слово literal, они означают, что значение дешифруется из кода (текста), как показано во многих примерах в других сообщениях.

Другим распространенным применением является значение, которое преобразуется в непосредственные значения в сборке. Это значения, которые вставляются непосредственно в командную станцию, а не требуют загрузки регистров.

Ответ 10

Я слышал, что строковые литералы используются случайно, чтобы ссылаться на то, что спецификация С# фактически ссылается как стенографические литералы. Правильный строковый литерал допускает экранирование определенных символов (с префиксом a), например \t для вкладки. Дословный строковый литерал добавляется @и обрабатывается дословно,\не имеет особого значения.

//regular
string regular = "\thello world";
//verbatim
string verbatim = @"C:\";
//the regular equivalent of this would be "C:\\"

Ответ 11

Литерал - это "исходное представление данных".