常量是具有固定值的表达式。
1.文字
文字是最明显的常量类型。它们用于在程序的源代码中表示特定值。在前面的章节中,我们已经使用了一些来为变量提供特定的值,或者表达我们希望程序打印出来的消息,例如,当我们编写:
a = 5;
这段代码中是一个文字常量。
文本常量可分为:整数、浮点、字符、字符串、布尔值、指针和用户定义的文本。
整数数字:
1776
707
-
这些是标识整数值的数字常量。请注意,它们未括在引号或任何其他特殊字符中;它们是一连串简单的数字,代表十进制基数的整数;例如, 始终表示值 8。
除了十进制数(我们大多数人每天使用的十进制数)之外,C++还允许使用八进制数(以 16 为基数)和十六进制数(以 <> 为基数)作为文字常量。对于八进制文字,数字前面有一个(零)字符。对于十六进制,它们前面有字符(零、x)。例如,以下文本常量彼此等效:
75 // decimal
0113 // octal
0x4b // hexadecimal
所有这些都表示相同的数字:75(七十五)分别表示为基数 10 的数字、八进制数字和十六进制数字。
这些文字常量有一个类型,就像变量一样。默认情况下,整数文本的类型为 。但是,可以将某些后缀追加到整数文本以指定不同的整数类型:
后缀 | 类型修饰符 |
---|---|
u 或 U | unsigned |
l 或 L | long |
ll 或 LL |
|
浮点数字:
它们用小数和/或指数表示实际值。它们可以包括小数点、字符(表示“在第 X 个高度处由十”,其中 X 是字符后面的整数值),也可以同时包含小数点和字符:
3.14159 // 3.14159
6.02e23 // 6.02 x 10^23
1.6e-19 // 1.6 x 10^-19
3.0 // 3.0
这是四个有效数字,小数以C++表示。第一个数字是PI,第二个是阿伏伽德罗的数字,第三个是电子的电荷(一个极小的数字)——它们都是近似的——最后一个是表示为浮点数字文字的数字三。
浮点文本的默认类型为 。浮点文本的类型,可以通过添加以下后缀之一来指定:
后缀 | 类型 |
---|---|
f 或 F | float |
l 或 L |
|
例如:
3.14159L // long double
6.02e23f // float
字符和字符串文本:
'z'
'p'
"Hello world"
"How do you do?"
前两个表达式表示单字符文本,后两个表达式表示由多个字符组成的字符串文本。请注意,为了表示单个字符,我们将其括在单引号 () 之间,为了表示字符串(通常由多个字符组成),我们将字符括在双引号 () 之间。
单字符转义码的列表:
转义码 | 描述 |
---|---|
\n | 换行符 |
\r | 回车 |
\t | 标签 |
\v | 垂直选项卡 |
\b | 退格 |
\f | 表单提要(页面提要) |
\a | 警报(蜂鸣音) |
\' | 单引号 (' ) |
\" | 双引号 (" ) |
\? | 问号 (? ) |
\\ | 反斜杠 (\ ) |
2.类型化常量表达式
const double pi = 3.1415926;
const char tab = '\t';
例:
#include <iostream>
using namespace std;
const double pi = 3.14159;
const char newline = '\n';
int main ()
{
double r=5.0; // radius
double circle;
circle = 2 * pi * r;
cout << circle;
cout << newline;
}
3.预处理器定义
命名常量值的另一种机制是使用预处理器定义。它们具有以下形式:
例:
#include <iostream>
using namespace std;
#define PI 3.14159
#define NEWLINE '\n'
int main ()
{
double r=5.0; // radius
double circle;
circle = 2 * PI * r;
cout << circle;
cout << NEWLINE;
}
请注意,这些行是预处理器指令,因此是单行指令,与C++语句不同,不需要分号 (;)最后;该指令会自动延伸至行尾。如果分号包含在行中,则它是替换序列的一部分,并且也包含在所有替换匹配项中。
@Neng