constexpr举例
时间: 2023-07-18 21:40:06 浏览: 40
下面是一个使用`constexpr`的示例,计算斐波那契数列的第n项:
```c++
#include <iostream>
constexpr int fibonacci(const int n)
{
return (n == 0 || n == 1) ? n : (fibonacci(n - 1) + fibonacci(n - 2));
}
int main()
{
constexpr int n = 10;
constexpr int result = fibonacci(n);
std::cout << "斐波那契数列的第" << n << "项为:" << result << std::endl;
return 0;
}
```
在上面的示例代码中,使用`constexpr`关键字声明了一个名为`fibonacci`的函数,用于计算斐波那契数列的第n项。在`fibonacci`函数体中,使用三目运算符判断n是否等于0或1,如果是则直接返回n,否则递归计算n-1和n-2的斐波那契数列值之和。
在`main`函数中,定义了一个常量`n`,并使用`constexpr`计算出了斐波那契数列的第n项。需要注意的是,`n`必须是在编译时即可确定的常量表达式,否则程序将无法通过编译。
通过使用`constexpr`关键字,可以让编译器在编译时计算斐波那契数列的第n项,从而提高程序的效率。
相关问题
constexpr function constexpr
constexpr是C++11引入的关键字,用于声明函数或变量为编译时常量表达式。constexpr函数是在编译时就能够计算出结果的函数,它可以用于在编译时进行常量表达式的计算,而不需要在运行时进行计算。
constexpr函数的特点包括:
1. 函数的返回值类型必须是字面值类型(literal type)。
2. 函数体内只能包含一条return语句。
3. 函数的参数必须是字面值类型。
4. 函数体内不能有任何形式的动态内存分配、条件判断、循环等运行时语义。
constexpr函数的优势在于可以在编译时进行常量表达式的计算,从而提高程序的性能和效率。它可以用于编译时求解一些常量,例如计算斐波那契数列、阶乘等。
constexpr函数的使用示例:
```cpp
constexpr int factorial(int n) {
return (n <= 1) ? 1 : (n * factorial(n - 1));
}
int main() {
constexpr int result = factorial(5); // 在编译时计算出结果
return 0;
}
```
相关问题:
1. 什么是字面值类型?
2. constexpr函数有什么限制?
3. constexpr函数和普通函数有什么区别?
constexpr变量
constexpr变量是C++11引入的一个关键字,用于声明一个在编译时就可以计算出结果的常量。它可以用于声明整型、浮点型、指针等各种类型的常量。
constexpr变量的特点是在编译时就被计算出来,而不是在运行时。这使得它可以用于一些需要在编译时确定值的场景,例如数组大小、模板参数等。
constexpr变量的声明方式与普通变量类似,只需要在变量声明前加上constexpr关键字即可。例如:
constexpr int num = 10;
constexpr float pi = 3.14159;
constexpr char* str = "Hello";
在使用constexpr变量时,编译器会在编译时计算出它的值,并将其替换为对应的常量值。这样可以提高程序的性能和效率。
需要注意的是,constexpr变量必须满足一定的条件才能被编译器计算出值,例如变量的初始化表达式必须是一个常量表达式,且只能使用编译时可确定的函数和操作符。