C 可变长度整数数组

C 可变长度整数数组,c,C,我有一个 int val,i; scanf("%d",&val); int a[] = { (val & 0x7) , (val & 0x5) }; for(i=0;i<2;i++) printf("%d\n",a[i]); 但在另一种情况下,这很好。那么这段代码好吗?在C99之前不允许使用初始值设定项列表中的变量 C89:6.5.7: 具有静态存储持续时间的对象的初始值设定项或具有聚合或联合类型的对象的初始值设定项列表中的所有表达式都应为常量表达式 从C99开始

我有一个

int val,i;
scanf("%d",&val);
int a[] = { (val & 0x7) , (val & 0x5) };
for(i=0;i<2;i++)
printf("%d\n",a[i]);

但在另一种情况下,这很好。那么这段代码好吗?

在C99之前不允许使用初始值设定项列表中的变量

C89:6.5.7: 具有静态存储持续时间的对象的初始值设定项或具有聚合或联合类型的对象的初始值设定项列表中的所有表达式都应为常量表达式


从C99开始,它是允许的。确保您是使用
-std=c99
标志编译的。

它在哪个编译器上不工作?
a
有多少个元素?如果你需要两个,为什么不定义
inta[2]
?@a3mlord这只是一个例子,我需要类似的东西this@a3mlord; 你需要更新。
expression must have a constant value