- 常量是固定值,在程序執行期間不會改變。
- 常量可以是任何的基本數據類型,可分為整型數字、浮點數字、字符、字符串和布爾值
- 常量的值在定義后不能進行修改
一、整數常量
可以是十進制【不帶前綴】、八進制【0】或十六進制【0x 或 0X】的常量
整數常量也可以帶一個后綴,后綴是 U 和 L 的組合,U 表示無符號整數(unsigned),L 表示長整數(long)。后綴可以是大寫,也可以是小寫,U 和 L 的順序任意。
212 // 合法的 215u // 合法的 0xFeeL // 合法的 078 // 非法的:8 不是八進制的數字 032UU // 非法的:不能重復后綴 85 // 十進制 0213 // 八進制 0x4b // 十六進制 30 // 整數 30u // 無符號整數 30l // 長整數 30ul // 無符號長整數
二、浮點常量
浮點常量由整數部分、小數點、小數部分和指數部分組成。您可以使用小數形式或者指數形式來表示浮點常量。
- 當使用小數形式表示時,必須包含整數部分、小數部分,或同時包含兩者。
- 當使用指數形式表示時, 必須包含小數點、指數,或同時包含兩者。帶符號的指數是用 e 或 E 引入的。
3.14159 // 合法的 314159E-5L // 合法的 510E // 非法的:不完整的指數 210f // 非法的:沒有小數或指數 .e55 // 非法的:缺少整數或分數
三、布爾常量
- true 值代表真。
- false 值代表假。
不應把 true 的值看成 1,把 false 的值看成 0
四、字符常量
五、字符串常量
括在雙引號 " " 中
包含:普通的字符、轉義序列和通用的字符
六、定義常量
- 使用 #define 預處理器。
- 使用 const 關鍵字。
(1)#define 預處理器
#include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' int main() { int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
輸出:50
(2)const 關鍵字
#include <iostream> using namespace std; int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n';
int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
結果:50
把常量定義為 大寫字母 形式,是一個很好的編程實踐
補充:
1.定義成 const 后的常量,程序對其中只能讀不能修改
所以在定義時必須賦初始值,要不然是錯誤的,除非這個變量是用extern修飾的外部變量
const int A=10; //正確。 const int A; //錯誤,沒有賦初始值。 extern const int A; //正確,使用extern的外部變量。
2.
- const 定義常量之后,是不能夠改變的
- 宏定義是可以取消的
定義: #define N 21 取消: #undef N 12
3.宏定義 #define 常量const的區別
4.
const關鍵字應用
- 欲阻止一個變量被改變,可使用const,在定義該const變量時,需先初始化,以后就沒有機會改變他了;
- 對指針而言,可以指定指針本身為const,也可以指定指針所指的數據為const,或二者同時指定為const;
- 在一個函數聲明中,const可以修飾形參表明他是一個輸入參數,在函數內部不可以改變其值;
- 對於類的成員函數,有時候必須指定其為const類型,表明其是一個常函數,不能修改類的成員變量;
- 對於類的成員函數,有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。
5.
更多查看:const char*, char const*, char*const 的區別
6.const 和 define定義常量時,兩個數的范圍不同
7.預處理 #define 后不能加分號,程序不會報錯,但 計算會出錯