https://www.jb51.cc/csharp/1193387.html
编程之家收集整理的这篇文章主要介绍了区分C++常量表达式、const、constexpr(附代码),编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。
const int a4 = a3; // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。但编译没问题!
以上代码可正常编译。
说明了const声明的不一定就是常量表达式!
C++11新标准规定,允许将变量声明为constexpr 类型以便由编译器来验证变量的值是否是常量表达式。constexpr
指定符声明可以在编译时求得函数或变量的值,声明为constexpr的变量一定是一个常量,而且必须用常量表达式来进行初始化。
constexpr int a4 = a3; // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。编译报错!
constexpr int a4 = a3; 编译将报错!
相关文章:
以上是编程之家为你收集整理的区分C++常量表达式、const、constexpr(附代码)全部内容。