2017-09-08 51 views
-6

我是一個新的cie。我發現在C++的書瞭如下聲明:「在任何C++程序中,變量名以字母開頭,並且只包含字母,數字和underscores.The以下是不變量名:」

2x    // a name must start with a letter 
time$to$market // $ is not a letter, digit, or underscore 
Start menu  // space is not a letter, digit, or underscore 

問題爲什麼time$to$market不是變量名? 我試圖編譯它,編譯器沒有抱怨,儘管它應該抱怨?

+0

我們不能在變量名中使用$符號,只允許使用下劃線,特殊字符中 –

+3

GCC(也可能是其他人)有一個允許在標識符中使用'$'的擴展名。 – Quentin

+1

老兄,字母的意思是'a-z'和'A-Z'。數字表示「0-9」。下劃線表示'_'。 – Yves

回答

1

I tried to use it and the compiler did not give error.

即使您當前的編譯器支持它(正如Quentin在評論中指出的那樣),也不要這樣做。它不在標準中,所以你的代碼將不能移植到其他環境中,甚至不能移植到使用不同標準的相同編譯器中(嘗試使用GCC選項-ansi,-std=c++11etc.)。可能發生的最好的情況是,你在編譯時遇到了錯誤,最糟糕的是你會在幾個小時之後狩獵的未定義行爲。

1

編譯器有不同的變體。可能編譯速度更快,出於某些原因,可能會因某些默認設置而有所不同。我不知道你在用什麼編譯器。但是如果你對編譯器做了一些研究,你會發現$是允許的。嘗試使用不同的編譯器進行編譯以完全符合您的書籍。查看這個主題來看看純粹的C++是什麼意思。因爲書通常教純語言。

What is pure C++

0

它完全取決於你所使用的編譯器,因爲我使用TC 4.5它表明這個錯誤:

Compiling DEMO.C:

Illegal character '$' (0x24)

一些編譯器可能會支持它。

相關問題