Ger*_*ald 2 c++ arrays const constant-expression
我有这两个假设的常量:
int const MATRIX_SIZE = 1000;
int const LONGEST_LR_LINK = (int)floor(MATRIX_SIZE/2);
Run Code Online (Sandbox Code Playgroud)
我试图声明一个数组:
int lrLinkArray [LONGEST_LR_LINK];
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误:数组绑定在']'标记之前不是整数常量
手动插入MATRIX_SIZE用于LONGEST_LR_LINK的任何一半都不会那么麻烦,但我很好奇这个解决方案是什么.对const进行任何计算是不好的做法吗?
C++中的整数除法自动向下舍入.所以,如果你有定义
int const LONGEST_LR_LINK = MATRIX_SIZE/2;
Run Code Online (Sandbox Code Playgroud)
那么LONGEST_LR_LINK确实会是一个不变的表达,而且
int lrLinkArray [LONGEST_LR_LINK];
Run Code Online (Sandbox Code Playgroud)
应该没事.此外,floor(MATRIX_SIZE/2)不管你认为它做了什么,无论如何; 你必须写floor(MATRIX_SIZE/2.0),以强制非整数除法.