常量

264 阅读4分钟

常量

常量就是程序中不能被修改的固定的值,也称为字面值。

常量可以是任何基础数据类型,比如整型,浮点型,字符型,字符串和布尔类型。

通常情况下常量被认为是定义后不能更改的变量。

整型常量

整数常量可以是十进制、八进制或十六进制常量。对于十六进制可以用 ox 或 OX 前缀来标示,可以用 O 前缀来标示八进制,十进制默认不需要前缀标志。

整数常量也可以与 U 和 L 后缀一起搭配使用,相应的来表示无符号和长整型。后缀对大小写不敏感。

下面是整型常量的一些例子:

212     // 合法
215u    // 合法
0xFeeL  // 合法
078     // 不合法: 8 不是合法的八进制
032UU   // 不合法: U 后缀不能重复使用

下面试其他的关于不同类型的整型常量:

85      // 十进制
0213    // 八进制
0x4b    // 十六进制
30      // 整型
30u     // 无符号整型
30l     // 长整型
30ul    // 无符号整型

浮点常量

浮点常量由整数部分、小数点、小数部分和一个指数部分组成。可以使用十进制或者指数的形式来表示浮点常量。

使用指数表示时,必须包含小数点,指数,或两者同时使用。相对应的,使用十进制形式表示,必须包含整数部分,小数部分,或两者兼而有之。有符号指数可以用 e 或 E 来表示。

下面是一些浮点常量的一些例子:

3.14159     // 合法
314159E-5L  // 合法
510E        // 不合法: 指数部分不完整
210f        // 不合法: 没有整数部分
.e55        // 不合法: 无整数或小数部分

布尔常量

C++ 中只有两个布尔类型的常量,他们都是标准 C++ 中的关键词。

  1. true:代表肯定的
  2. false:代表否定的

需要注意的是不可以将 true 看做是1,也不可以将 false 看做是 0。

字符常量

字符常量应该用单引号括起来。如果字符常量以 L 开头(仅大写),那么它将是一个宽字符常量且需要使用 wchar_t类型的变量来存储。否则,它将是个窄字符常量且存储在 char 类型的变量中。

字符常量可以还是一个普通字符(比如 'x')、转义字符('\t')或者是一个通用字符(比如 '\u02C0')。

C++ 中有一些使用反斜杠标志的字符,他们具有特殊的意义,且可以用于表示换行(\n)或者 tab 键(\t)。下面是一些转义字符的列表:

转义字符 意义
\\ \ 字符
\' ' 字符
\'' '' 字符
\? ? 问号字符
\a 警告
\b 退格
\f 换页
\n 换行
\r 回车
\t 横向 tab
\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++ 中的两个简单的默认常量。

  1. #define:预处理
  2. const:关键字

如下是详细的例子:

#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

注意:在程序首部定义常量是一个良好的编程习惯。