2016-11-15 54 views
1

比方說,我聲明這個變量:有人可以向我解釋爲什麼L(long)必須在那裏嗎?

long k = 1060606060000; 

如果我這樣做,我得到一個錯誤,因爲數字顯然是要大的整數。爲什麼我必須在編譯器的最後添加L以識別它是一個長變量?儘管我明顯地說我需要k是長型的。

+2

因爲添加L,你告訴相似的「嘿順便說一句,這是一個長類型......」 –

+0

那麼爲什麼還要在開頭添加長長呢? – Geddi

+0

@Geddi如果你有一個數字不是「明顯」太長以至於不能像'0'那樣適合'int',你會如何指定它是一個長文字?那麼,爲什麼有兩種方法來指定一個長文字,當你可以有一個? –

回答

2

因爲文字值將始終被解釋爲int,如果沒有附加lL

如果沒有指定l,您應該將文字int分配給類型爲long的變量。

在編譯時,編譯器首先檢查文字值,如果沒有追加lL,則它會將其解釋爲int

現在,如果數量大於Integer.MAX_VALUE,編譯器將顯示錯誤。

+0

但我顯然聲明我的變量只要,因爲我的數字可以擴展int的範圍。爲什麼編譯器不會自動投射那麼久? – Geddi

+0

將此視爲兩個步驟的過程。首先編譯器檢查文字,然後將文字的賦值應用於引用。編譯錯誤(當不附加'L' /'l'時)將在檢查文字值時發生。 – Mena

+0

好的謝謝。這是否有背景知識?我覺得這不是最實用的方法嗎? – Geddi

相關問題