常量只有四类:整型常量,浮点常量,枚举常量 和 字符常量。
每类都有自己的一点规定,这个说起来比较扯,但记起来很容易:
整型常量有三类:十、八、十六进制常量。
十进制的是指:非零数字起始的数字序列。
八进制: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 。