int a = 5;
const int b = a, c = 4;

int e[a];
int d[b];
int f[c];
f[c]的定义是有效的。
变量b也是常量int,但是编译器给我的错误是int d[b]行“表达式必须具有常量值”。 bc有什么区别?

最佳答案



c有一个编译时间常数初始化器,而b没有。具有编译时间常数初始化程序的const对象本身就是一个编译时间常数值。



不仅任何常数都可以。 const限定符表示运行时常量(即,该值可以在运行时确定,但在对象的整个生命周期中都不会改变)。只有编译时间常数值可以用作数组大小。

关于c++ - 我可以使用常量定义数组的长度,那么为什么int d [b]不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58859269/

10-10 21:26