从双变量定义“ const int”

时间:2018-09-24 09:26:57

标签: c++11 types

我需要定义一个“ const int Iteration”来定义数组“ a [Iteration]”。迭代是从2个“双变量”派生的。在下面,我无法成功定义[Iteration]。请帮忙。谢谢

    double Range=9.4;
    double Step=2.2;
    const int Iteration=(int)(Range/Step);

    int a[Iteration]={0};

2 个答案:

答案 0 :(得分:1)

RangeStep并不是常量表达式,因此Iteration也不是常量表达式。数组绑定必须是常量表达式

您可以使用constexpr关键字来确保变量是根据常量表达式初始化的,并且自身可以被编译器识别为常量表达式

constexpr double Range=9.4;
constexpr double Step=2.2;
constexpr int Iteration=(int)(Range/Step);

int a[Iteration]={0};

答案 1 :(得分:1)

或者,如果变量不是编译时常量(在constexpr时应为变量),则需要更改a的类型:

double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);

std::vector<int> a_v(Iteration);
std::unique_ptr<int[]> a_u(new int[Iteration]());
// or simply, but not recommended
int *a_p(new int[Iteration]());
// don't forget to delete[] a_p afterwards