2009-01-27 167 views

回答

83

文本是(wikipedia

「爲表示源代碼內的值的任何符號」(與標識符,其在存儲器指的值對比這。)

例子:

  • "hey"(串)
  • false(一個布爾值)
  • 3.14(實數)
  • [1,2,3](號碼列表)
  • (x) => x*x(一個函數)
  • /^1?$|^(11+?)\1+$/(一個正則表達式)

有些東西不是字面值:

  • std::cout(標識符)
  • foo = 0;(一個語句)
  • 1+2(表達式)
14

文本是一個分配給一個明確的值,如

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' 

編輯:正如指出的那樣,分配本身無關,與文字的定義,我用我的例子分配,但文字也可以傳入方法等等。

+0

呵呵,有人downvoted這??? – 2009-01-29 17:00:54

+0

是的:文字與作業無關;) – 2009-03-06 17:35:50

+0

這是真的,我應該澄清一個事實,即我使用賦值來展示文字是什麼。 – 2009-03-06 20:21:02

3

字面是當你把它放在代碼中。所以字符串文字是

string s = "SomeText"; 

這與構建字符串或將其作爲參數相反。

64

文字是一個已經直接寫入源代碼的值。

例如:

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; 

什麼它們區別於變量或資源編譯器可以將它們視爲常量或使用它們的代碼執行某些優化,因爲它們肯定不會更改。

4

快速示例:

int my_int_var = 723;

723 - 這組字符是指文字的整數值。

my_int_var - 這組字符是指變量整數值。

6

一個文本串是一個值,但值也可以存儲在變量。在聲明中

string str = "string literal"; 

有一個字符串變量(str)和一個字符串文字。語句執行後,它們都具有相同的值。

請注意,在許多語言中,變量和文字值不一定必須是相同的類型。例如:

int a = 1.0; 

上面的字面值是一個浮點類型。該值將被編譯器強制轉換爲int變量。

另一個例子,在上面的第一行C++代碼中,字符串文字的類型實際上並不是庫類型string。爲了保持與C的向後兼容性,C++中的字符串文字是char數組。

1

我聽說過字符串文字用來指代C# specification實際上引用的逐字字符串文字。常規字符串文字允許轉義某些字符(以a開頭),比如\ t用於製表符。逐字字符串文字由@前綴並逐字處理,\沒有特殊含義。

//regular 
string regular = "\thello world"; 
//verbatim 
string verbatim = @"C:\"; 
//the regular equivalent of this would be "C:\\" 
9

字面值是當你在源代碼中包含值(而不是引用變量或常量)時。例如:

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如果我跳過在一個循環中每個其它項目。如果的含義是的數字比其實際的的值(它通常是)更重要,那麼最好命名它。

2

通常,當某人使用單詞字面意思時,它們表示該值可以從代碼(文本)中解譯出來,如其他帖子中的許多示例所示。

另一個常見用法是在彙編中轉換爲立即值的值。這些是直接插入到機器指令中的值,而不是要求寄存器加載的值。

11

在編程中,一個值完全按照它的意思來解釋。相反,變量是在程序執行過程中可以表示不同值的名稱。常數是一個在整個程序中代表相同價值的名稱。但文字不是一個名字 - 它本身就是價值。

文字可以是數字,字符或字符串。例如,在表達式,

X = 3

x是可變的,和圖3是一個文字。

1

文字是「數據的源代碼表示」。