【发布时间】:2016-05-04 15:57:51
【问题描述】:
我很难理解这个问题的答案。
给出以下代码:
int: size, size2, j;
float: x;
array[1:30] of int: nums;
对于下面的每个赋值语句,circle 可以或不能说明它是否可以在编译时进行完全类型检查。假设数组的下标范围被认为是其类型的一部分。假设数字溢出不被视为类型错误。
A. size = size2 + 1; --> Answer: CAN
B. x = size; --> Answer: CAN
C. nums[j] = 33; --> Answer: CANNOT
D. nums[3] = nums[4]; --> Answer: CAN
E. nums[j] = nums[j+1]--> Answer: CANNOT
现在,当程序被转换为机器代码时会发生编译时错误,而在程序执行期间会发生运行时错误。我还阅读了以下有关编译与运行时错误的堆栈溢出问题:Runtime vs Compile time。在研究了这两个主题之后,我仍然对如何得出以下答案感到困惑。任何帮助将不胜感激。
【问题讨论】:
标签: compiler-errors runtime-error typechecking