const 创建的常量为什么不能用来指定数组大小?
书中说的无效不明白为什么,用下面代码试也没出现什么问题,从在网上查的结果只知道const 和 #define有区别,也没从区别中看出为什么无效? 求指教书本内容:(c primer plus 第十六章C预处理和C库 449页)
#define LIMIT 20
const int LIM = 5;
static int datal[LIMIT]; //合法
static int data2[LIM]; //无效
const int LIM2 = 2 * LIMIT; //合法
const int LIM3 = 2 * LIM; //无效
程序代码:
#include <stdio.h> #define LIMIT 20 int main(void) { const int LIM = 5; static int datal[LIMIT]; static int data2[LIM]; const int LIM2 = 2 * LIMIT; const int LIM3 = 2 * LIM; printf("LIM2 = %d LIM3 = %d\n", LIM2, LIM3); for (int i = 0; i < LIM; i++){ data2[i] = i + 2; printf("data2[%d] = %d\n", i, data2[i]); } return 0; } /* VC2013运行结果: --------------------- LIM2 = 40 LIM3 = 10 data2[0] = 2 data2[1] = 3 data2[2] = 4 data2[3] = 5 data2[4] = 6 请按任意键继续. . . --------------------- */