C++ 常量/字面量
常量是指程序无法更改的固定值,它们被称为字面量。
常量可以是任何基本数据类型,可分为整型、浮点型、字符型、字符串型和布尔型。
同样,常量与常规变量类似,不同之处在于它们的值在定义后无法修改。
整型字面量
整型字面量可以是十进制、八进制或十六进制常量。前缀指定基数或基数:0x 或 0X 表示十六进制,0 表示八进制,无表示十进制。
整数字面量还可以带有后缀,该后缀由 U 和 L 组成,分别表示无符号和长整型。后缀可以是大写或小写,且顺序不限。
以下是一些整数文字的示例 -
212 // 合法 215u // 合法 0xFeeL // 合法 078 // 非法:8 不是八进制数字 032UU // 非法:后缀不能重复
以下是其他各种整数文字的示例 -
85 // 十进制 0213 // 八进制 0x4b // 十六进制 30 // 整数 30u // 无符号整数 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')、转义序列(例如,' ')或通用字符(例如,'\u02C0')。
在 C++ 中,某些字符前面带有反斜杠时具有特殊含义,它们用于表示换行符 ( ) 或制表符 ( )。这里列出了一些这样的转义序列代码 -
转义序列 | 含义 |
---|---|
\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ?字符 |
\a | 提醒或铃声 |
\b | 退格键 |
\f | 换页符 |
换行符 | |
回车符 | |
水平制表符 | |
\v | 垂直制表符 |
\ooo | 一到三位数字的八进制数 |
\xhh . . . | 一位或多位数字的十六进制数 |
示例
以下示例展示了一些转义序列字符 -
#include <iostream> using namespace std; int main() { cout << "Hello World "; 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 ' ' 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 = ' '; int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
当编译并执行上述代码时,它会产生以下结果 -
50
请注意,用大写字母定义常量是一种良好的编程习惯。