从双精度变量定义"const int"



我需要定义获取一个"const int Iteration"来定义数组"a[Iteration]"。迭代派生自 2 个"双精度变量"。有了下面,我无法成功定义 a[迭代]。请帮忙。谢谢

double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);
int a[Iteration]={0};

或者,如果你的变量不是编译时常量(它们应该在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

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

可以使用constexpr关键字来确保变量从常量表达式初始化,并且编译器将变量本身识别为常量表达式

constexpr double Range=9.4;
constexpr double Step=2.2;
constexpr int Iteration=(int)(Range/Step);
int a[Iteration]={0};

最新更新