c++杜茂康版常量知识详细梳理
时间: 2023-11-18 19:07:22 浏览: 95
C++中的常量指的是不可变的值,它们可以用于各种目的,例如防止意外的值改变、提高代码的可读性和维护性等等。C++中有多种类型的常量,包括字面常量、const常量、constexpr常量和枚举常量等等。
1. 字面常量
字面常量是一种最简单的常量类型,它们是直接出现在程序中的数值或字符串。例如,以下是一些常见的字面常量:
- 整数常量:42、-3、0、123456789等等。
- 浮点数常量:3.14、-2.718、0.0、1.0e-6等等。
- 字符常量:'a'、'B'、'1'、'\n'等等。
- 字符串常量:"hello"、"world"、""、"12345"等等。
注意,字面常量是不能被修改的,因为它们在编译时就已经确定了。如果你试图修改字面常量的值,编译器会报错。
2. const常量
const常量是一种在程序运行时不能被修改的值,它们可以用于任何可以使用变量的地方。const常量的定义方式为:
```
const <type> <name> = <value>;
```
其中,`<type>`表示常量的类型,`<name>`表示常量的名称,`<value>`表示常量的值。例如,以下是一些const常量的定义:
```
const int MAX_SIZE = 100;
const double PI = 3.1415926;
const char* MESSAGE = "Hello, world!";
```
需要注意的是,const常量一旦被定义就不能被修改,否则编译器会报错。
3. constexpr常量
constexpr常量是一种在编译期就可以计算出来的常量,它们可以用于需要常量表达式的任何地方。constexpr常量的定义方式为:
```
constexpr <type> <name> = <value>;
```
其中,`<type>`表示常量的类型,`<name>`表示常量的名称,`<value>`表示常量的值。例如,以下是一些constexpr常量的定义:
```
constexpr int MAX(int a, int b) { return a > b ? a : b; }
constexpr double PI = 3.1415926;
```
需要注意的是,constexpr常量必须在编译期就能够计算出来,因此它们的值必须是一个常量表达式。如果你试图定义一个非法的constexpr常量,编译器会报错。
4. 枚举常量
枚举常量是一种将一组常量打包在一起的方式,它们可以用于代替一组具有相同含义的整数常量。枚举常量的定义方式为:
```
enum <name> {
<value1>,
<value2>,
...
};
```
其中,`<name>`表示枚举类型的名称,`<value1>`、`<value2>`等等表示枚举常量的名称和值。例如,以下是一个枚举类型的定义:
```
enum Color {
RED = 0xFF0000,
GREEN = 0x00FF00,
BLUE = 0x0000FF
};
```
需要注意的是,枚举常量的值可以是任何整数类型,包括char、short、int和long等等。如果你试图定义一个重复的枚举常量,编译器会报错。
阅读全文