参考答案和解析
正确答案:B

试题(21)分析
本题考查编译过程基本知识。
高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误又可分为静态语义错误和动态语义错误。语法错误指语言结构上的错误,静态语义错误指编译时就能发现的程序含义上的错误,动态语义错误只有在程序运行时才能表现出来。堆栈溢出、指针异常和数组元素下标越界都是程序运行中才能出现的问题,而遵循先声明后引用原则的程序语言必须先定义变量,然后才能使用,否则编译器会在语法分析阶段指出变量未定义错误。
参考答案
(21)B

更多“试题(21)对高级语言源程序进行编译时,可发现源程序中的 (21) 错误。(21)A. 堆栈溢出B. 变量未定义 ”相关问题
  • 第1题:

    对高级语言源程序进行编译时,可发现源程序中的(29)错误。

    A.堆栈溢出

    B.变量未定义

    C.指针异常

    D.数组元素下标越界


    正确答案:B
    解析:本题考查编译过程基本知识。
      高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误又可分为静态语义错误和动态语义错误。语法错误指语言结构上的错误;静态语义错误指编译时就能发现的程序含义上的错误,动态语义错误只有在程序运行时才能表现出来。堆栈溢出、指针异常和数组元素下标越界都是程序运行中才能出现的问题,而遵循先声明后引用原则的程序语言必须先定义变量,然后才能使用,否则编译器会在语法分析阶段指出变量未定义错误。

  • 第2题:

    ● 已知某高级语言源程序A经编译后得到机器C上的目标程序B,则 (21) 。

    (21)

    A. 对B进行反编译,一般不能还原出源程序A

    B. 对B进行反汇编,不能得到与源程序A等价的汇编程序代码

    C. 对B进行反编译,得到的是源程序A的变量声明和算法流程

    D. 对A和B进行交叉编译,可以产生在机器C上运行的动态链接库


    正确答案:A

  • 第3题:

    对高级语言源程序进行编译时,可发现源程序中的( )错误。

    A.堆栈溢出
    B.变量未定义
    C.指针异常
    D.数组元素下标越界

    答案:B
    解析:
    本题考查编译过程基本知识。高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误又可分为静态语义错误和动态语义错误。语法错误指语言结构上的错误,静态语义错误指编译时就能发现的程序含义上的错误,动态语义错误只有在程序运行时才能表现出来。堆栈溢出、指针异常和数组元素下标越界都是程序运行中才能出现的问题,而遵循先声明后引用原则的程序语言必须先定义变量,然后才能使用,否则编译器会在语法分析阶段指出变量未定义错误。

  • 第4题:

    对高级语言源程序进行编译时,可发现源程序中的__(29)__错误。

    A.堆栈溢出

    B.变量未定义

    C.指针异常

    D.数组元素下标越界


    正确答案:B
    编译就是把高级语言变成计算机可以识别的二进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成二进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。(1)词法分析。词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。(2)语法分析。编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。(3)中间代码生成。中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。(4)代码优化。代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。(5)目标代码生成。目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。本题的选项A,堆栈溢出就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据。这种错误,编译时是无法发现的,只有当运行结果出来后,才能分析出错误所在。选项C和D是在程序运行时可能出现的错误。

  • 第5题:

    ● 已知某高级语言源程序A 经编译后得到机器C 上的目标程序B,则 (21) 。

    (21)

    A. 对B 进行反编译,不能还原出源程序A

    B. 对B 进行反汇编,不能得到与源程序A 等价的汇编程序代码

    C. 对B 进行反编译,得到的是源程序A 的变量声明和算法流程

    D. 对A 和B 进行交叉编译,可以产生在机器C 上运行的动态链接库


    正确答案:A