Что означает слово "буквальный" при использовании в контексте, таком как литеральные строки и литеральные значения?
В чем разница между литеральным значением и значением?
Что означает слово "буквальный" при использовании в контексте, таком как литеральные строки и литеральные значения?
В чем разница между литеральным значением и значением?
Литерал - это "любая запись для , представляющая значение в исходном коде" (wikipedia)
(Контрастируйте это с помощью идентификаторов, которые относятся к значению в памяти.)
Примеры:
"hey"
(строка)false
(boolean)3.14
(действительное число)[1,2,3]
(список номеров)(x) => x*x
(функция)/^1?$|^(11+?)\1+$/
(regexp)Некоторые вещи, которые не являются литералами:
std::cout
(идентификатор)foo = 0;
(инструкция)1+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;
Что отличает их от переменных или ресурсов, так это то, что компилятор может рассматривать их как константы или выполнять определенные оптимизации с помощью кода, где они используются, потому что он определенно не изменится.
Литерал - это назначение явного значения, например
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: Как указано, само присваивание не имеет ничего общего с определением литерала, я использовал назначение в моем примере, но литерал также может быть передан в метод и т.д.
В программировании значение, написанное точно так, как оно должно интерпретироваться. Напротив, переменная - это имя, которое может представлять разные значения во время выполнения программы. И константа - это имя, которое представляет одно и то же значение во всей программе. Но букваль не имя - это само значение.
Литерал может быть числом, символом или строкой. Например, в выражении
x = 3
x - переменная, а 3 - литерал.
Литерал - это когда вы включаете значение в исходный код (в отличие от ссылки на переменную или константу). Например:
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, если я пропускаю каждый другой элемент в цикле. Если значение числа более важно, чем его фактическое значение (оно обычно есть), его лучше назвать.
Литеральное значение - это значение, но значение также может быть сохранено в переменной. В заявлении
string str = "string literal";
есть строковая переменная (str) и строковый литерал. После выполнения оператора оба значения имеют одинаковое значение.
Помните, что во многих языках переменная и буквальное значение необязательно должны быть одинаковыми. Например:
int a = 1.0;
Литеральное значение выше - тип с плавающей точкой. Значение будет принудительно компилятором, чтобы вписаться в переменную int.
В другом примере, в первой строке кода на С++ выше тип строкового литерала вообще не является типом библиотеки string
. Чтобы поддерживать обратную совместимость с C, строковые литералы на С++ являются char массивами.
Быстрый пример:
int my_int_var = 723;
723 - Этот набор символов относится к целочисленному значению буквальное.
my_int_var - этот набор символов относится к целочисленному значению переменной.
Литерал - это когда вы помещаете его в код. Таким образом, строковый литерал
string s = "SomeText";
Это в отличие от построения строки или принятия ее в качестве параметра.
Обычно, когда кто-то использует слово literal, они означают, что значение дешифруется из кода (текста), как показано во многих примерах в других сообщениях.
Другим распространенным применением является значение, которое преобразуется в непосредственные значения в сборке. Это значения, которые вставляются непосредственно в командную станцию, а не требуют загрузки регистров.
Я слышал, что строковые литералы используются случайно, чтобы ссылаться на то, что спецификация С# фактически ссылается как стенографические литералы. Правильный строковый литерал допускает экранирование определенных символов (с префиксом a), например \t для вкладки. Дословный строковый литерал добавляется @и обрабатывается дословно,\не имеет особого значения.
//regular
string regular = "\thello world";
//verbatim
string verbatim = @"C:\";
//the regular equivalent of this would be "C:\\"
Литерал - это "исходное представление данных".