「文字通り」という言葉は何を意味しますか?
-
20-08-2019 - |
質問
「リテラル」という言葉は、リテラル文字列やリテラル値などのコンテキストで使用される場合、何を意味しますか?
リテラル値と値の違いは何ですか?
解決
リテラルとは「任意の表記」です。 代表する ソース コード内の値" (ウィキペディア)
(これを対比してください 識別子, 、 どれの 参照する メモリ内の値に変換します。)
例:
"hey"
(文字列)false
(ブール値)3.14
(実数)[1,2,3]
(数字のリスト)(x) => x*x
(機能)/^1?$|^(11+?)\1+$/
(正規表現)
リテラルではないもの:
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'
編集:指摘されたように、割り当て自体がリテラルの定義とは何の関係もありません、私は私の例では割り当てを使用していたが、リテラルも方法などに渡すことができます。
。リテラルです。たとえばます:
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";
の文字列変数(文字列)と、文字列リテラルがあります。文が実行された後、それらの両方が同じ値を持っています。
多くの言語で、変数とリテラル値は必ずしもでも同じ型である必要はありませんので注意してください。たとえばます:
int a = 1.0;
上記のリテラル値は、浮動小数点型です。値は、int型の変数に収まるように、コンパイラによって強制されます。
別の例では、文字列リテラルのタイプ上記のC ++コードの最初の行に実際ライブラリ型string
全くありません。 Cとの後方互換性を維持するために、C ++の文字列リテラルは、char配列である。
クイック例:
INT my_int_var = 723;
723 - 文字のセットはのリテラルの整数値を意味する
。my_int_var - 文字のこのセットはの変数の整数値を意味する
リテラルです。だから、文字列リテラルがある
string s = "SomeText";
この文字列を構築する、またはパラメータとしてそれを取るとは対照的に、です。
は、一般的に、それらは他の記事の例の多くに示すように値をコード(テキスト)からの解読であることを意味します。
別の一般的な使用は、アセンブリ内の即値に変換された値のためのものです。これらはむしろレジスタのロードを必要とするよりも機械命令に直接挿入されている値である。
//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
実際に一意のシンボルのシーケンスを用いて表され、ただし、値はリテラル専用速記を使用して表現されず、代わりに値を表すための一般的な(冗長)概念的なメカニズムを使用し任意のクラス型のます。
という用語は、はリテラルは用語と同義であるの値、例、定数、部材の、およびタイプのの要素のが、それを書き留めるための省略表現があるを教えてくれるの余分な意味のビットを運びます。
私はコンセプトを表現するために、アルファベットから一緒に文字を糸引きとは対照的に、エジプトの象形文字のようにリテラルを考えるのが好き。