C++ 常量/字面量
常量指的是程序不能更改的固定值,它们被称为字面量。
常量可以是任何基本数据类型,可以分为整数数字、浮点数字、字符、字符串和布尔值。
同样,常量在处理上就像普通变量一样,除了定义后其值不能被修改。
整数字面量
整数字面量可以是十进制、八进制或十六进制常量。前缀指定基数或进制:0x 或 0X 表示十六进制,0 表示八进制,十进制则无前缀。
整数字面量还可以有后缀,由 U 和 L 组合而成,分别表示 unsigned 和 long。后缀可以是大写或小写,并且顺序任意。
以下是一些整数字面量的示例 −
212 // 合法 215u // 合法 0xFeeL // 合法 078 // 非法:8 不是八进制数字 032UU // 非法:不能重复后缀
以下是各种类型整数字面量的其他示例 −
85 // 十进制 0213 // 八进制 0x4b // 十六进制 30 // int 30u // unsigned int 30l // long 30ul // unsigned long
浮点字面量
浮点字面量包括整数部分、小数点、小数部分和指数部分。您可以用十进制形式或指数形式表示浮点字面量。
使用十进制形式表示时,必须包含小数点、指数或两者皆有;使用指数形式表示时,必须包含整数部分、小数部分或两者皆有。带符号的指数由 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 | 1 到 3 位的八进制数 |
| \xhh . . . | 1 位或多位的十六进制数 |
示例
以下示例展示了几个转义序列字符 −
#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 identifier value
示例
以下示例详细解释了这一点 −
#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 type variable = value;
示例
以下示例详细解释了这一点 −
#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
注意,将常量定义为大写字母是一种良好的编程实践。