题目
以下叙述中错误的是______。A. C 语言源程序经编译后生成后缀为.obj 的目标程序B. C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C. 用 C 语言编写的程序称为源程序,它以 ASCII 代码形式存放在一个文本文件中D. C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
以下叙述中错误的是______。
A. C 语言源程序经编译后生成后缀为.obj 的目标程序
B. C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C. 用 C 语言编写的程序称为源程序,它以 ASCII 代码形式存放在一个文本文件中
D. C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
题目解答
答案
D. C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
解析
本题考查C语言程序的编译流程及语句的执行性质。关键点在于理解:
- 编译过程:源程序→预处理→编译→汇编→链接,最终生成可执行文件;
- 语句类型:可执行语句(如
printf)会被编译为机器指令,而非执行语句(如变量声明、预处理指令)不会生成指令。
错误选项D混淆了“语句类型”与“生成指令”的关系,需重点辨析。
选项分析
A.C语言源程序经编译后生成后缀为.obj的目标程序
正确。编译器将源代码转换为目标代码(如Windows下的.obj文件),这是编译阶段的输出。
B.C程序经过编译、连接步骤之后才能形成可执行文件
正确。编译生成目标文件,连接器将目标文件与库文件整合,最终生成可执行的二进制文件(如.exe)。
C.源程序以ASCII形式存储
正确。C语言源代码是文本文件,字符以ASCII编码存储。
D.所有语句最终转换为机器指令
错误。
- 可执行语句(如
printf、if)会被编译为机器指令; - 非执行语句(如
int a;、#include、/*注释*/)不生成指令:- 变量声明仅告知编译器类型信息;
- 预处理指令在编译前被处理,不参与代码生成;
- 注释在编译时被忽略。