-1

如何计算一些数学表达式,即找到 n 的阶乘;在 C++ 编译期间?

4

2 回答 2

2

是一篇关于 C++ 中模板元编程的 wiki 文章。

是另一篇关于编译时函数执行的 wiki 文章。

是一个关于阶乘的 SO 问题。

让我们以编译时计算阶乘的 wiki 示例为例。

template <int N>
struct Factorial {
    enum { value = N * Factorial<N - 1>::value };
};

template <>
struct Factorial<0> {
    enum { value = 1 };
};

// Factorial<4>::value == 24
// Factorial<0>::value == 1
const int x = Factorial<4>::value; // == 24
const int y = Factorial<0>::value; // == 1

由于所需的所有参数在编译时都是已知的(例如,它们在 中明确提及Factorial<4>),因此编译器能够生成所有需要的代码。之后,value结构的Factorial<4>24 将在以后使用,就像您自己硬编码一样。

于 2012-10-19T07:29:40.533 回答
-1

欢迎来到所谓的模板元编程。

这个页面描述了它是什么。它有一个具体的例子来计算编译时整数的阶乘。

于 2012-10-19T07:30:34.223 回答