C++使用兩種常量:字面常量和符號常量。
字面常量
通過展示幾個例子進行說明
1: int x = 5; // 5 is a literal constant
1: unsigned int nValue = 5u; // unsigned constant
2: long nValue2 = 5L; // long constant
默認情況下,浮點型字面常量是double類型的。把它們轉化成float值,可以通過增加f或F的後綴。
1: float fValue = 5.0f; // float constant
通常,避免使用不是0或1的字面常量是一個很好的想法。更詳細的可以參看magic numbers一文中。
符號常量
可以通過#define聲明一個符號變量:
1: #define YEN_PER_DOLLAR 122
2: int nYen = nDollars * YEN_PER_DOLLAR;
使用#define進行聲明需要注意兩個主要問題。首先,因為它們是被預處理器處理的,將符號名用defined的值取代,#defined符號常量不會再debugger中顯示。或者,如果你僅僅看到語句 int nYen = nDollars * YEN_PER_DOLLAR;,你不得不尋找#define聲明獲取YEN_PER_DOLLAR具體使用的值。
其次,#define值通常具有全局作用域。這意味著一個片段中#defined聲明的變量名可能在另一段代碼中再次#defined聲明。
更好的方式是使用const關鍵詞來聲明符號常量。const變量必須在聲明的時候進行賦值,此後該值將不能被改變。上面的例子改編成如下方式:
1: const int nYenPerDollar = 122;
2: int nYen = nDollars * nYenPerDollar;
如果對const值進行改變就會出現編譯錯誤。
1: const int nYenPerDollar = 122;
2: nYenPerDollar = 123; // compiler error!
const能夠使你避免使用magic numbers,並使得你的代碼更加的易讀。有些程序員更傾向於使用大寫字符的變量名,作為const變量的名稱。const變量的用法除了不能更改外與其他變量的用法相同。