1.5常量
什么是常量
- 常量就是在程序运行过程当中值不会发生改变,并且一眼就能看出其值得量。12 'a' 7.809 "Hello, C++"
- 常量也能够分红多种:整型,浮点型,字符型,字符串,符号常量
整型常量
- 十进制整型常量。0 123 -456 677363
- 十六进制整型常量,以0x开头。 0x123 -0x1a 0x2abcdef 0xFFA 0x100 十六进制数中,用A(a)表示10,B(b)表示11,C(c)表示12,D(d)表示13,E(e)表示14,F(f)表示15。 (3450)<sub>10</sub> = 0 x 10<sup>0</sup> + 5 x 10<sup>1</sup> + 4 x 10<sup>2</sup> + 3 x 10<sup>3</sup> 0x2FAB = 11 x 16<sup>0</sup> + 10 x 16<sup>1</sup> + 15 x 16<sup>2</sup> + 2 x 16<sup>3</sup> = (12203) <sub>10</sub>
1个十六进制位,正好对应于4个二进制为 F = (1111) <sub>2</sub>。编码
整型常量
- 八进制整型常量,以0开头:01 0123 -0456 0677
字符型常量
- 字符型常量表示一个字符,用单引号括起来:'a' 'B' ',' '0' '9' ':'
- 字符型常量可用于给char 和 unsigned char类型的变量赋值
char c = 'a';
unsigned char ch;
ch = '9';
字符型常量
- 字符型常量和变量都占一个字节,内部存放的是字符的ASCII编码。ASCII编码是一个0~255的整数。 | 字符 | 二进制编码 | 十六进制编码 | 十进制编码 | | 'A' | 0100 0001 | 0x41 | 65 | | 'a' | 0110 0001 | 0x61 | 97 | | '0' | 0100 1000 | 0x30 | 48 | | '!' | 0010 0001 | 0x21 | 33 |
字母和数字的ASCII十进制编码
- '0' ~ '9': 48 ~ 57
- 'A' ~ 'Z': 65 ~ 90
- 'a' ~ 'z': 97 ~ 122
转义字符
C++中还有一类字符常量,以''开头,如'\n'、'\r'、'\t'等,称为转义字符。所谓“转义”是指''后面的字符被转成别的含义。 | 转移字符 | 含义 | ASCII码 | | \n | 换行,将输出位置移到下一行开头 | 10 | | \r | 回车,将输出位置移到本行开头 | 13 | | \t | 制表符 | 9 | | \b | 退格 | 8 | | \ | 反斜杠 | 92 | | ' | 单引号 | 39 | | \0 | | 0 | | \ddd | ddd是个八进制数,表明字符的ASCII码 | ddd(八进制) | | \xhh | hh是个十六进制数,表明字符的ASCII码 | hh(十六进制) |code
字符串常量
- 字符串常量是用双引号括起来的一串字符:"a" "abc" "1234567"
- ""也是一个字符串常量,它表明一个空串,即不包含任何字符的字符串
- "a"和'a'是不同的,前者是只包含一个字符的字符串,后则是一个字符,不能用前者给一个char类型的变量赋值。
- "1234567"固然也和1234567是不同的,不能用前者给一个int类型的变量赋值。
- 字符串常量里也能够包含转义字符
printf("123\t456\nabc\n");
printf("123\'45\n");
printf("UVWX\"YZ\n);
/*Output:
123 456
abc
123'45
UWVX"YZ
*/
符号常量
- 为了阅读和修改的方便,经常使用一个有字母、数字和下划线组成的名字来表明某个常量,这样的常量就叫符号常量:#define 常量名 常量值
- 定义以后,程序中全部出现 “常量名”的地方,就等价于出现的是“常量值”
- “常量名”的命名规则和变量相同,“常量值”则能够是任何常量
- 尽可能少使用数值常量,而应该使用符号常量代替它,这样便于修改。
#define MAX_NUM 1000
#define UNIVERSITY_NAME "Peking University"