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

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

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


person prodev42    schedule 27.01.2009    source источник


Ответы (11)



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

Например:

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; 

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

person Joel Coehoorn    schedule 27.01.2009

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

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'

РЕДАКТИРОВАТЬ: Как уже указывалось, само присвоение не имеет ничего общего с определением литерала, я использовал присвоение в моем примере, но литерал также может быть передан в метод и т. Д.

person Ed S.    schedule 27.01.2009

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

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

person Matthew Crumley    schedule 27.01.2009

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

string str = "string literal";

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

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

int a = 1.0;

Литеральное значение выше - это тип с плавающей запятой. Компилятор заставит это значение поместиться в переменную int.

Другой пример: в первой строке кода C ++ выше тип строкового литерала на самом деле вовсе не является типом библиотеки string. Для обеспечения обратной совместимости с C строковые литералы в C ++ представляют собой массивы символов.

person Bill the Lizard    schedule 27.01.2009

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

int my_int_var = 723;

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

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

person mbeckish    schedule 27.01.2009

Буквальный - это когда вы помещаете его в код. Итак, строковый литерал

string s = "SomeText";

Это противоположно построению строки или ее использованию в качестве параметра.

person Anthony D    schedule 27.01.2009

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

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

person HasaniH    schedule 27.01.2009

Литерал - это «представление данных в исходном коде».

person Koray Tugay    schedule 25.12.2016

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

//regular
string regular = "\thello world";
//verbatim
string verbatim = @"C:\";
//the regular equivalent of this would be "C:\\"
person Timothy Carter    schedule 27.01.2009

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

Пример типов, значения которых часто представлены литералами:

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

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

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

person Mario Galic    schedule 07.05.2018