AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、〖第15题〗692) 以下叙述中正确的是()。

A
 在程序的一行上可以出现多个有效的预处理命令行
B
 使用带参的宏时,参数的类型应与宏定义时的一致
C
 宏替换不占用运行时间,只占编译时间
D
 在以下定义中 C R 是称为”宏名”的标识符 #define C R 045

答案解析

正确答案:C

解析:

这是一道关于 C 语言预处理指令(Preprocessor Directives)和宏定义(Macro Definition)的基础概念题。我们需要逐一分析每个选项的正确性。 **选项分析:** * **A. 在程序的一行上可以出现多个有效的预处理命令行** * **错误**。在 C 语言中,预处理指令是以 `#` 开头的,并且通常要求**一行只能有一个预处理指令**。虽然某些编译器可能支持通过反斜杠 `\` 将一条长指令分行写,或者在极少数非标准扩展中允许特殊情况,但在标准 C 语言规范中,一个预处理指令必须独占一行(或者说,换行符标志着预处理指令的结束)。因此,不能在一行内写两个独立的 `#define` 或 `#include` 等指令。 * **B. 使用带参的宏时,参数的类型应与宏定义时的一致** * **错误**。宏替换是**纯文本替换**,发生在编译之前的预处理阶段。预处理器并不理解数据类型(如 `int`, `float`, `char` 等),它只是机械地将宏调用中的实参文本替换到宏定义的形参位置。因此,宏没有类型检查机制,参数的类型不需要、也无法在宏定义时指定或保持一致。类型检查是在后续的编译阶段由编译器对替换后的代码进行的。 * **C. 宏替换不占用运行时间,只占编译时间** * **正确**。宏替换是由**预处理器**在编译过程的早期阶段完成的。当源代码被编译器处理之前,所有的宏调用已经被替换成了具体的代码文本。因此,在程序最终生成可执行文件并运行时,不存在“宏替换”这个动作,自然不占用运行时间。它消耗的是编译过程中的时间(预处理阶段)。 * **D. 在以下定义中 C R 是称为”宏名”的标识符 #define C R 045** * **错误**。在 `#define` 指令中,语法格式通常为 `#define 宏名 替换文本`。宏名必须是一个合法的标识符,且**中间不能有空格**。 * 对于 `#define C R 045`: * 预处理器会将 `C` 识别为宏名。 * `R 045` 会被识别为替换文本(即每当代码中出现 `C` 时,会被替换为 `R 045`)。 * 因此,宏名是 `C`,而不是 `C R`。如果想定义名为 `CR` 的宏,应该写成 `#define CR 045`(中间无空格)。 **结论:** 综上所述,只有选项 C 的叙述是正确的。 **正确答案:C**
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码