🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一.常量表达式 1. **概念** 值不会改变且在编译过程就能得到计算结果的表达式。 >字面值属于常量表达式,用常量表达式初始化的 `const` 常变量也属于常量表达式。 2. **一个对象是不是常量表达式由它的数据类型和初始值共同决定。** ```c++ int get_size() { return 50; } const int age = 18;// age 是常量表达式,因为 18 是字面值。 const int id = age + 20; // id 是常量表达式,因为 age 是常量表达式, 20 是字面值。 const int size = get_size(); //size不是常量表达式,因为它的具体值在运行时才能获取到。 int staff = 27; // staff不是常量表达式,因为 `int` 不是 `const` 类型,它的值在运行时才能得到。 ``` ## \[11+\][$]二. constexpr 变量 1. **用途** 将变量声明为 `constexpr` 类型以便编译器验证变量值是否是一个常量表达式。 2. 声明为 `constexpr` 的变量一定是一个 **常变量** ,必须 **初始化** ,且必须使用 **常量表达式** 初始化。 ```c++ int get_size() { return 50; } constexpr int age = 18;// 对,因为 18 是字面值。 constexpr int id = age + 20; // 对,因为 age 是常量表达式, 20 是字面值。 constexpr int size = get_size(); //错,因为它的具体值在运行时才能获取到。 ```