Что означает слово "буквальный"?
Что означает слово "литерал" при использовании в контексте, таком как литеральные строки и литеральные значения?
в чем разница между буквальным значением и значением?
12 ответов:
литерал - это " любая нотация для представляют значение в исходном коде" (Википедия)
(сравните с коды, который см. к значению в памяти.)
примеры:
"hey"
(строка)false
(логический)3.14
(действительное число)[1,2,3]
(список номеров)(x) => x*x
(a функция)/^1?$|^(11+?)+$/
(регулярное выражение)некоторые вещи, которые не являются литералами:
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-a буквальный.
литерал - это когда вы включаете значение в исходный код (в отличие от ссылки на переменную или константу). Например:
означает, что обычно более важно, чем его значение (которое может измениться в любом случае).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;
буквальное значение это значение, но значение также может быть сохранено в переменной. В заявлении
string str = "string literal";
есть переменная string (str) и строковый литерал. После выполнения они оба имеют одинаковое значение.
имейте в виду, что во многих языках переменная и литеральное значение не обязательно должны быть одного типа. Например:
int a = 1.0;
буквальное значение является типом с плавающей точкой. Этот стоимость будет быть преобразован компилятором, чтобы вписаться в переменной типа int.
для другого примера, в первой строке кода C++ выше тип строкового литерала на самом деле не является типом библиотеки
string
на всех. Чтобы поддерживать обратную совместимость с C, строковые литералы в C++ являются массивами символов.
пример:
int my_int_var = 723;
723 - этот набор символов относится к литерал целочисленное значение.
my_int_var - этот набор символов относится к переменная целочисленное значение.
литерал-это когда вы кладете его в код. Так строковый литерал
string s = "SomeText";
это в отличие от построения строки, или принимая его в качестве параметра.
обычно, когда кто-то использует слово literal, они означают, что значение расшифровывается из кода (текста), как показано во многих примерах в других сообщениях.
другое общее использование для значений, которые преобразуются в непосредственные значения в сборке. Это значения, которые вставляются непосредственно в машинную инструкцию, а не требуют регистровых нагрузок.
Я слышал строковые литералы, используемые случайно для обозначения того, что спецификация C# на самом деле относится к дословным строковым литералам. Обычный строковый литерал позволяет экранировать определенные символы (с префиксом a ), например \t для вкладки. Дословный строковый литерал добавляется @ и обрабатывается дословно, \ не имеет особого значения.
//regular string regular = "\thello world"; //verbatim string verbatim = @"C:\"; //the regular equivalent of this would be "C:\"
литералы-это сокращенные обозначения для значений в определенных типах, которые язык считает настолько важными или фундаментальными, что он выделил синтаксический сахар только для них.
пример типов, значения которых часто представлены литералы:
Boolean = { true, false } Integer = { ..., -2, -1, 0, 1, 2, ... } Character = { 'a', 'b', ... } String = { "hello", "world", ... }
некоторые языки имеют литералы даже для функций типа:
Integer -> Integer = { (x: Integer) => x + 2), (x: Integer) => x/2, ...}
примером значений, которые обычно не представлены литералами, может быть значения класса типы:
Car(brand: String, seats: Integer) = { Car("BMW", 5), Car("Ferrari", 2), ...}
здесь
Car("BMW", 5)
типаCar
действительно однозначно обозначается с помощью последовательности символов, однако значение не представляется с помощью специального сокращенного литерала, а вместо этого использует общие (подробные) условные механизмы для обозначения значений любого типа класса.термин литерал является синонимом терминов стоимостью,экземпляр,постоянный,, и элемент типа, но несет в себе особенный смысл, который говорит нам, что это сокращение для его написания.
мне нравится думать о литералах как о египетских иероглифах, а не о связывании символов из алфавита, чтобы выразить концепцию.