【发布时间】:2013-08-12 14:46:30
【问题描述】:
最近我在某处读到,如果在运行时给出了数组维度,那么这样的程序可以被解释但不能被编译。
就像下面的 C++ 代码一样
int m;
cin >> m;
int a[m];
我使用 turbo C++ 编译它,它给我一个错误,即数组声明需要一个常量表达式。(预期)
但在 Java 的情况下
int m;
Scanner input = new Scanner(System.in);
m = input.nextInt();
int[] a = new int[m];
它没有给出任何错误。 (我猜是因为它被解释为未编译)
但为什么会有这种差异?
【问题讨论】:
-
A. Java是一种编译语言。 B. 此验证针对每个编译器实现。
-
我的问题不是关于 java 或 c++,而是关于这样的程序如何无法编译但可以解释,其中数组维度在运行时声明。
标签: c++ arrays compiler-construction interpreter