常量只有四類:整型常量,浮點常量,枚舉常量 和 字符常量。
每類都有自己的一點規定,這個說起來比較扯,但記起來很容易:
整型常量有三類:十、八、十六進制常量。
十進制的是指:非零數字起始的數字序列。
八進制:0起始的八進制數字序列。八進制數字是指 0-7 這八個數字
十六是:0x 或 0X 起始的十六進制數字序列。十六進制數字是指 0-9 a-f A-F 這些。
以上三類都可以追加整型后綴u, U, l, L, ll, LL 用以分別表示常量是 usigned, long, long-long 類型。
浮點也有兩類:一類是十進制浮點常量,另一個是十六進制浮點常量(這個不是很常用)。
十進制的有兩種上表示方法:
一種借助小數點的:d.d .d d. 這三種形式。其中的 d 是數字序列的意思。
一種不用小數點,就必須給出指數部分(就是用科學記數法)。
即使使用第一種方法,后面也可以再根指數部分,就是加個 e 或者 E 再可選地加一個正負號,再數字序列。
十六進制的,大體上差不多,但不管你前面有沒有小數點,后面的指數部分都必須給出。用 p 或 P 代替 e E。
所有類型都可以加后綴 f F l L。
枚舉的一般不會考試出的,我想。它的語法也相對簡單,就是加個 const 。我就不多說了。
字符的其實最復雜。
簡單的說就是用 '' 把數個(*見我后面的解釋)字符括起來。比如 'a'。它也有兩類,一個是所謂的普通字符常量。另一個(如果是應試的話其實可以無視),是寬字符常量,區別就是前面給個綴L,比如 L'a'。
但是它有一些轉義的規則。使得用文字描述起來超吃力,初學者也容易迷糊。
轉義規則有三類:簡單轉義,八進制轉義 和 十六進制轉義。
簡單轉義就是指 \' \" \? \\ \a \b \f \n \r \t \v 這么固定的幾個。
八進制是指 \ 后跟一至三個八進制數的形式,如 \1 \12 \ 123
十六進制是指 \x 后跟一個以上十六進制數字的形式,如 \xa \x123abc 這樣的。但限制是追加的值不能超過 unsigned char 或者 wchar_t 表示的上限。
在語義上,一個字符常量的類型是 int 。