数组大小作为对数

时间:2013-12-16 17:04:50

标签: c++ arrays

为什么C ++不允许将其作为数组大小?

const int SIZE = ceil(log10(pow(2., 1000)));
int arr[SIZE];

对于那些感兴趣的人,这是针对ProjectEuler上的问题16。我正在尝试声明一个数组来保存数字2 ^ 1000的每个数字,这是我找到我需要多少元素的方式。

2 个答案:

答案 0 :(得分:4)

它不允许它,因为=的右侧不是常量表达式,SIZE是常量表达式所必需的。现在const int仅仅意味着它是一个只读的整数对象。

const int SIZE = ceil(log10(pow(2., 1000)));

请改用动态数组,例如std::vector

或者你可以拿你的计算器并对其进行硬编码 - 顺便说一下它大约是301.03 :)

答案 1 :(得分:0)

即使你对SIZE使用const限定符,这只意味着你有一个只读变量,它的值在编译时是不可知的。由于函数调用ceil, log10, pow,SIZE的值只能在运行时知道,所以编译器不能静态分配SIZE字节,因为SIZE知道它已知。

因此,要么动态分配内存,要么自己计算值:)