一、常量概述
常量是指在程序运行过程中,其值始终不可改变的量。常量直接用符号(文字)来表示,例如 12、3.5、’A’ 都是常量。
二、整数常量
整数常量即以文字形式出现的整数,包括正整数、负整数和零。整数常量的表示形式有十进制、八进制和十六进制三种。
1. 十进制
十进制是我们日常使用最多的进制形式。由 0 到 9 的数字组成,但数字开头不能以 0 开头(0 本身除外)。
合法示例:12、-5、0
非法示例:012(以 0 开头会被编译器识别为八进制)
2. 八进制
八进制由若干个 0 到 7 的数字组成,并且必须以 0 开头,逢八进一。
示例:0123(对应十进制的 83)、00(对应十进制的 0)
注意:由于八进制整数常量一般用来表示无符号整数,所以前面不应带正负号。
3. 十六进制
十六进制由 0 到 9 以及 A 到 F 的字母组成,大小写均可,并且以 0x 或 0X 开头(0 是数字零,x 是字母)。
示例:0x1A(对应十进制的 26)、0xff(对应十进制的 255)、0X2B
注意:同样一般表示无符号整数,前面不应带正负号。
4. 整数常量的后缀
整数常量可以用后缀字母指定类型:
L 或 l:表示长整型。例如 100L、0xFFFFl
U 或 u:表示无符号型。例如 200U、0xABCDu
可以组合使用:100UL 或 100LU 表示无符号长整型。
三、实数常量
实数常量是以文字形式出现的实数,有两种表示方式:一般形式和指数形式。
1. 一般形式
即日常的小数写法,由数字和小数点组成。
示例:12.5、0.0、-3.14159
2. 指数形式
用科学计数法表示,格式为:小数部分 E 指数部分 或 小数部分 e 指数部分。E 或 e 表示 10 的幂。
示例:0.321E-1(表示 0.321 × 10^-1,即 0.0321)
其他示例:1.2e3(表示 1200)、-5.67E+2(表示 -567)
3. 后缀
实数常量默认是 double 类型。如果需要指定为 float 类型,可以加后缀 F 或 f。
示例:3.14f(float 类型)、2.718F(float 类型)
如果要指定为 long double 类型,可以加后缀 L 或 l。
示例:3.14L
四、字符常量
字符常量是用单引号括起来的一个字符。
示例:’a’、’D’、’?’、’1′
注意:单引号本身具有特殊意义(作为界限符),因此如果要表示单引号字符本身,需要使用转义序列:”’
1. 转义字符
有些字符是不可显示字符,无法通过键盘直接输入,例如响铃、换行、制表符、回车等。这些字符需要使用转义序列来表示,以反斜杠 \ 开头。
常见转义字符列表:
\n:换行符
\t:水平制表符
\v:垂直制表符
\b:退格符
\r:回车符
\f:换页符
\a:响铃符
\:反斜杠字符本身
‘:单引号字符
“:双引号字符
?:问号字符
\0:空字符(null,ASCII 码为 0)
2. 用 ASCII 码表示字符
字符还可以使用八进制或十六进制的 ASCII 码值来表示:
八进制形式:\nnn,其中 nnn 是 1 到 3 位八进制数字。
示例:\101(表示字符 ‘A’,因为 ‘A’ 的 ASCII 码是 65,八进制为 101)
十六进制形式:\xnnn,其中 nnn 是十六进制数字。
示例:\x41(同样表示字符 ‘A’)
五、字符串常量
字符串常量简称字符串,是用一对双引号括起来的字符序列。
示例:”abcd”、”china”、”this is a string”
由于双引号是界限符,如果要在字符串中表示双引号字符本身,需要使用转义序列 “。
示例:”please enter “yes” or “no””(输出为:please enter “yes” or “no”)
字符串的存储方式
字符串在内存中的存放形式是:按串中字符的顺序依次存放,每个字符占一个字节,并在末尾自动添加一个 ‘\0’(空字符)作为结束标记。
例如字符串 “AB” 在内存中占用 3 个字节,依次为 ‘A’、’B’、’\0’。
注意区分字符常量和字符串常量:
字符常量 ‘A’ 在内存中占 1 个字节,存放的是字符 A 的 ASCII 码。
字符串常量 “A” 在内存中占 2 个字节,依次为 ‘A’ 和 ‘\0’。
因此 ‘A’ 和 “A” 是不同的,类型也不同。
六、布尔常量
布尔型常量只有两个:
false:表示假
true:表示真
示例:bool isOpen = true; bool isDone = false;
七、代码示例
以下代码演示了各类常量的定义和使用:
#include <iostream>
using namespace std;
int main()
{
// ===== 整数常量 =====
int dec = 100; // 十进制
int oct = 0123; // 八进制,值为 83
int hex = 0x1A; // 十六进制,值为 26
long int li = 100L; // 长整型
unsigned int ui = 200U; // 无符号整型
cout << "dec = " << dec << endl;
cout << "oct = " << oct << endl;
cout << "hex = " << hex << endl;
cout << "li = " << li << endl;
cout << "ui = " << ui << endl;
// ===== 实数常量 =====
float f1 = 3.14f; // float类型
double d1 = 12.5; // double类型(默认)
double d2 = 0.321E-1; // 指数形式,值为 0.0321
cout << "f1 = " << f1 << endl;
cout << "d1 = " << d1 << endl;
cout << "d2 = " << d2 << endl;
// ===== 字符常量 =====
char c1 = 'A';
char c2 = '\n'; // 换行符
char c3 = '\101'; // 八进制转义,表示 'A'
char c4 = '\x41'; // 十六进制转义,表示 'A'
cout << "c1 = " << c1 << endl;
cout << "c3 = " << c3 << endl;
cout << "c4 = " << c4 << endl;
cout << "c2"; // 输出换行
// ===== 字符串常量 =====
char str1[] = "hello";
char str2[] = "please enter \"yes\" or \"no\"";
cout << "str1 = " << str1 << endl;
cout << "str2 = " << str2 << endl;
// ===== 布尔常量 =====
bool flag1 = true;
bool flag2 = false;
cout << "flag1 = " << flag1 << endl; // 输出 1
cout << "flag2 = " << flag2 << endl; // 输出 0
return 0;
}Code language: PHP (php)
八、小结
- 常量是在程序运行过程中值不可改变的量,直接用文字表示。
- 整数常量支持十进制、八进制(0开头)、十六进制(0x开头),可加后缀 L、U 指定类型。
- 实数常量有一般形式和指数形式,默认 double 类型,加 F 后缀为 float。
- 字符常量用单引号括起,不可显示字符用转义序列表示。
- 字符串常量用双引号括起,末尾自动添加 ‘\0’ 结束符,与字符常量不同。
- 布尔常量只有 true 和 false 两个值。