常量指的是程序中不可更改的固定值,也称为字面量。
常量可以是任意的基本数据类型,并且可以分为整数、浮点数、字符、字符串和布尔值。
再次强调,常量的处理方式与普通变量相同,只是它们的值在定义后不能被修改。
整数字面量
整数字面量可以是十进制、八进制或十六进制的常数。前缀指定了基数或基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀表示十进制。
整数字面量还可以有一个由 U 和 L 组成的后缀,分别代表无符号和长整型。后缀可以是大写或小写,并且可以以任意顺序出现。
以下是一些整数字面量的例子:
212 // 合法 215u // 合法 0xFeeL // 合法 078 // 非法: 8 不是八进制数字 032UU // 非法: 不能重复后缀
以下是其他类型的整数字面量的例子:
85 // 十进制 0213 // 八进制 0x4b // 十六进制 30 // int 30u // 无符号 int 30l // 长整型 30ul // 无符号长整型
浮点数字面量
浮点数字面量包含整数部分、小数点、分数部分和指数部分。你可以用十进制形式或指数形式来表示浮点数。
当使用十进制形式时,必须包括小数点、指数或两者;当使用指数形式时,必须包括整数部分、分数部分或两者。指数部分由 e 或 E 引入。
以下是一些浮点数字面量的例子:
3.14159 // 合法 314159E-5L // 合法 510E // 非法: 指数部分不完整 210f // 非法: 没有小数或指数 .e55 // 非法: 缺少整数或分数
布尔字面量
有两种布尔字面量,它们是标准 C++ 关键字的一部分:
true 的值表示真。
false 的值表示假。
你不应该将 true 的值等同于 1,将 false 的值等同于 0。
字符字面量
字符字面量用单引号括起来。如果字面量以 L(只有大写)开始,它是宽字符字面量(例如,L'x'),应该存储在 wchar_t 类型的变量中。否则,它是一个窄字符字面量(例如,'x'),可以存储在一个简单的 char 类型的变量中。
字符字面量可以是一个普通的字符(例如,'x'),一个转义序列(例如,'\t'),或者一个通用字符(例如,'\u02C0')。
C++ 中有一些特殊的字符,当它们前面有一个反斜杠时,它们将具有特殊的意义,并且被用来表示像换行(\n)或制表符(\t)。以下是一些这样的转义序列码:
转义序列 |
含义 |
\ |
\ 字符 |
' |
' 字符 |
" |
" 字符 |
? |
? 字符 |
\a |
报警或铃声 |
\b |
退格 |
\f |
换页 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
\ooo |
一到三位的八进制数 |
\xhh... |
一个或多个十六进制数 |
示例
以下是一个展示几个转义序列字符的例子:
#include <iostream>
using namespace std;
int main() {
cout << "Hello\tWorld\n\n";
return 0;
}
当以上代码被编译和执行时,产生的结果如下:
Hello World
字符串字面量
字符串字面量用双引号括起来。字符串包含类似字符字面量的内容:普通字符、转义序列和通用字符。
你可以使用字符串字面量来分隔长行并用空格分隔它们。
以下是一些字符串字面量的例子。所有的三种形式都是相同的字符串:
"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
定义常量
在 C++ 中有简单的方法来定义常量:
使用 #define 预处理器。
使用 const 关键字。
使用 #define 预处理器
以下是使用 #define 预处理器定义常量的形式:
#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
使用 const 关键字
你可以使用 const 前缀来声明指定类型的常量,如下:
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
注意:定义常量时,使用大写字母是一种好的编程习惯。