2012-12-20 27 views
-1

由於ç\ C++ \ Java的 -標識符名稱中的數字沒有問題嗎?

int 2a ; //invalid suffix "a" on integer constant

有沒有錯位數變種名的其餘部分,雖然它是有效的語法?

象 -

int num1 ; 
int num_1st ; 
int num_2nd ; 
+0

'int num_1st; int num_2nd;'最好表示爲'int num [2]',你可以使用它作爲'num [0]'和'num [1]'。 – Nawaz

回答

8

我從來沒有聽說過任何人(例如,任何編碼標準/指南),這有一個問題,在標識的數字。然而,太多的可以表示向量或陣列可能最好 - 即使只有兩個,你num_1stnum_2nd可能是因爲numbers[2]更好。

5

一種標識符不能以數字開頭。它必須以字母或下劃線開頭。

+2

我認爲他在實踐中更多地提出要在變量名中使用數字是不好的。他承認它不能以數字開頭。 –

0

答案是,在標識符名稱的其餘部分中沒有數字沒有問題。

+0

當然,你**說**其餘的標識符名稱中的數字沒有問題,但我嘗試使用'a3.5','b½'和'cπ',編譯器說我瘋了。 –

+1

@EricPostpischil我可以看到編譯器的觀點。 –

+0

@EricPostpischil那麼,在'a3.5'中,你試圖使用'5'作爲成員變量名稱,並且由於它以一個數字開頭,所以它不是有效的標識符名稱。另外兩個在Java中是無效的數字,正如最終權威人士所報道的那樣,「javac」(只是嘗試'float f =½;'或'float f =π;');-) – hyde

0

只要變量名有意義,使用數字作爲名稱的一部分肯定不是壞事。當然,如果有大量類似命名的變量,最後加上一個數字來區分它們,這可能是設計不好的標誌。

的原因,也沒有允許標識符開始的數字,我敢肯定,是它使得它如此更容易編寫解析器:

c = getchar(); 
ungetc(c); 
if (isdigit(c)) 
    token = number(); 
else 
    token = identifier(); 
1

變量標識符必須以字母開頭或下劃線,但其餘的字符可以是字母,下劃線或數字。

可以甚至decalre一個變量: INT _ = 0;

或者,如果你熟悉正則表達式,它可以被構圖爲: 「[A-ZA-Z _] \ W * \ B'」

凡\ W *?部分不是必須的。

0

這是規則關閉標識符,它必須以字母或下劃線,只有數字被允許後開始。

+0

不正確。 *「...之後只允許數字」*表示(英文)只有第一個字符可以是字母或下劃線。這顯然是不正確的。 –