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


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

в чем разница между буквальным значением и значением?

12 64

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 действительно однозначно обозначается с помощью последовательности символов, однако значение не представляется с помощью специального сокращенного литерала, а вместо этого использует общие (подробные) условные механизмы для обозначения значений любого типа класса.

термин литерал является синонимом терминов стоимостью,экземпляр,постоянный,, и элемент типа, но несет в себе особенный смысл, который говорит нам, что это сокращение для его написания.

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