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

1、第99题 (1.0分) 题号:692 以下叙述中正确的是()。

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

答案解析

正确答案:C

解析:

**正确答案:C** **解析:** 本题考查 C 语言中预处理指令(特别是宏定义)的相关概念。我们逐一分析各个选项: * **A 选项错误**: 在 C 语言中,预处理指令是以 `#` 开头的行。标准规定,一个预处理指令必须独占一行。虽然某些编译器可能允许使用反斜杠 `\` 进行换行续写,但在一行物理代码上直接书写多个独立的预处理命令(例如 `#define A 1 #define B 2`)是不合法的,会导致编译错误。 * **B 选项错误**: 宏定义是简单的文本替换,由预处理器在编译前处理。预处理器不进行类型检查。因此,使用带参宏时,参数的类型不需要与宏定义时“一致”(因为宏定义本身也不指定类型)。类型的匹配和检查是在宏替换后,由编译器对生成的代码进行检查时进行的。如果类型不匹配,可能会在编译阶段报错或产生警告,但这并非宏定义机制本身的约束。 * **C 选项正确**: 宏替换(Macro Expansion)是由**预处理器**在**编译阶段之前**完成的。预处理器将源代码中的宏调用替换为宏定义的主体内容。这个过程发生在程序运行之前,因此宏替换本身**不占用程序的运行时间**,只占用编译(更准确地说是预处理)时间。这是宏与函数调用的主要区别之一(函数调用发生在运行期,有压栈、跳转等开销)。 * **D 选项错误**: 在定义 `#define C R 045` 中,预处理器的规则是:`#define` 后的第一个标识符是宏名,其余部分(直到行尾)是替换列表。 因此,在这个定义中,**宏名是 `C`**,而替换文本是 `R 045`。这意味着当代码中出现 `C` 时,它会被替换为 `R 045`。`C R` 并不是一个整体的宏名,中间的空格分隔了宏名和替换体。 综上所述,只有 C 选项的叙述是正确的。
题目纠错
c语言选择判断题库

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

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