“literal”这个词是什么意思?
在文本string和文字值等上下文中,“literal”这个词是什么意思?
字面值和值之间有什么区别?
文字是“在源代码中表示值的任何符号”( 维基百科 )
(将其与标识符进行对比, 标识符是指内存中的值。)
例子:
-
"hey"
(一串) -
false
(布尔) -
3.14
(一个实数) -
[1,2,3]
(数字列表) -
(x) => x*x
(一个函数) -
/^1?$|^(11+?)\1+$/
(一个正则expression式)
一些不是文字的东西:
-
std::cout
(一个标识符) -
foo = 0;
(一份声明) -
1+2
(expression式)
文字是一个已经直接写入源代码的值。
例如:
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
一些文字可以有一个特殊的语法,所以你知道什么types的文字是:
//The 'M' in 10000000M means this is a decimal value, rather than int or double. var accountBalance = 10000000M;
它们与variables或资源的区别在于,编译器可以将它们视为常量,或者在使用代码的情况下执行某些优化,因为它们肯定不会改变。
一个文字是赋值给一个明确的值,比如
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'
编辑:正如指出的,赋值本身没有任何关系的文字的定义,我在我的例子中使用赋值,但文字也可以传递给一个方法,等等。
在编程中,一个完全按照它的意思来解释的值。 相反,variables是在程序执行期间可以表示不同值的名称。 常数是一个在整个程序中代表相同价值的名字。 但是文字不是一个名字,而是价值本身。
文字可以是数字,字符或string。 例如,在expression式中,
x = 3
x是一个variables,3是一个文字。
一个文字是当你在源代码中包含该值(而不是引用一个variables或一个常量)。 例如:
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。 如果数字的含义比其实际价值更重要(通常是这样),最好命名它。
一个文字值是一个值,但是一个值也可以存储在一个variables中。 在声明中
string str = "string literal";
有一个stringvariables(str)和一个string文字。 语句执行后,它们都具有相同的值。
请注意,在许多语言中,variables和文字值不一定必须是相同的types。 例如:
int a = 1.0;
上面的文字值是一个浮点types。 该值将被编译器强制转换为intvariables。
再举一个例子,在C ++代码的第一行中,string文字的types实际上并不是库types的string
。 为了保持与C的向后兼容性,C ++中的string文字是char数组。
快速示例:
int my_int_var = 723;
723 – 这组字符是指文字整数值。
my_int_var – 这组字符是指一个可变的整数值。
字面是当你把它放在代码中。 所以string文字是
string s = "SomeText";
这与构buildstring或将其作为参数相反。
通常,当某人使用单词字面时,它们的意思是代码(文本)中的值是可以翻译的,如其他文章中的许多示例所示。
另一个常见用法是在汇编中转换为即时值的值。 这些是直接插入机器指令的值,而不是要求寄存器加载。
我曾经听说过使用string文字来引用C#规范实际引用的逐字string文字。 一个常规的string文字允许转义某些字符(前缀为a),如\ t为一个制表符。 逐字string文字由@前缀并逐字处理,\没有特殊含义。
//regular string regular = "\thello world"; //verbatim string verbatim = @"C:\"; //the regular equivalent of this would be "C:\\"
文字是“数据的源代码表示”。