C 预处理器测试(测验)2025年3月28日 | 阅读 5 分钟 1) 在哪个阶段,下面的代码会被文件 #include<stdio.h> 的内容替换?
正确选项是 (c)。 说明 在预处理阶段,行 #include<stdio.h> 会被同名系统头文件的内容替换成stdio.h 文件内容。 因此,文件 'stdio.h' 的全部文本会被 #include 指令替换。 2) C 预处理器指令 #undef 可以用于之前已 #define 的宏。
正确选项是 (a)。 说明 正确,指令 #undef 只能用于程序中之前已 #define 的宏。 例如:#define PI 3.14 我们可以通过 #undef PI 来取消定义 PI 宏。 3) C 预处理器指令 #ifdef...#elif?#endif 用于条件编译。
正确选项是 (a)。 说明 正确,C 宏如 #ifdef...#elif?#endif 用于在 C 程序中执行条件操作。 C 预处理器指令的语法是 4) 下面的程序会输出什么?
正确选项是 (b)。 说明 宏语句 SWAP(x, y) int t; t=x, x=y, y=t; 交换给定两个变量的值。 步骤 1: int x=10, y=20; 变量 x 和 y 被声明为整型并分别初始化为 10, 20。 步骤 2: SWAP(x, y);。此处宏被替换,它交换变量 x 和 y 的值。 因此,程序的输出是 x=20, y=10。 5) 以下哪个是 C 语言中正确形成的 #define 语句?
正确选项是 (d)。 说明 带参数的宏定义的语法是
6) 下面的程序会输出什么?
正确选项是 (a)。 说明 程序中 #ifdef, #else 和 #endif 是预处理器命令。 如果宏 DEF 通过 #define 语句定义,则 #ifdef 后面的代码被编译,否则 #else 和 #endif 命令之间的代码被执行。由于 DEF 已被定义,#ifdef DEF 求值为真,因此计算并打印 'j' 的平方,即 9。 在定义宏 DEF 时,不一定需要为宏语句提供展开,因为在程序中我们不使用宏展开的值。 因此,程序的输出是 j 的平方=9。 7) 下面的程序会输出什么?
正确选项是 (b)。 说明 当预处理器将程序发送给编译器时,IT, HRA 和 DA 分别被替换为 0.1, 0.2 和 0.3。当 bas_sal 设置为 1000 时,净工资计算如下: 语句printf("Gross salary=%f\n", net_sal); 打印结果。因此,输出是 Output 总工资=1400 8) 头文件必须具有 .h 扩展名吗?
正确选项是 (b)。 说明 不,头文件可以有任何扩展名。不一定要求头文件必须具有 .h 扩展名。 9) 哪个头文件用于支持函数 - malloc() 和 calloc()?
正确选项是 (c)。 说明 void *calloc(size_h nitems, size_h size): 函数 calloc() 需要双参数。 void *malloc(size_h size): 函数 malloc() 需要单参数。 为了支持函数 - malloc() 和 calloc(),需要 **stdlib.h** 头文件。 10) 宏语句的执行速度可能比函数快。
正确选项是 (a)。 说明 宏语句的执行速度更快,没有上下文切换的开销,因为宏的代码在调用行处展开。 因此,上述陈述是正确的。 11) 下面的程序会输出什么?
正确选项是 (b)。 说明
预处理期间,宏 MYFILE 被替换为 <stdio.h>,然后程序被编译和执行,如下所示: 因此,程序的输出是 Hello Welcome to javatpoint 12) 如果一个头文件在程序中被包含两次,是否会导致错误?
正确选项是 (c)。 说明 在 GCC 编译器和 Turbo C 中,编译器会处理这些问题,不会产生任何错误。在其他编译器中,可能会发生错误。 除非头文件已做好处理,确保如果已包含则不再包含。 因此,程序中由于两次包含头文件而产生的错误是 **取决于编译器**。 13) 预处理器可以捕获简单的错误,如嵌套注释、括号不匹配或缺少声明。
正确选项是 (b)。 说明 该陈述是错误的,因为预处理器无法捕获错误;它只能用给定表达式替换宏。 编译器用于检测程序中的错误。 14) 在每个 C 程序中,至少有一个预处理器指令。
正确选项是 (b)。 说明 该陈述是错误的,因为任何 C 程序都不是强制要求预处理器指令的。我们也可以在 C 语言中编写一个不使用任何预处理器指令的程序。 15) 下面的程序会输出什么?
正确选项是 (d)。 说明 宏 MAX(x, y) (x > y ? x : y) 返回给定两个数中较大的那个。 步骤 1: int a; 变量 'a' 被声明为整型。 步骤 2: a = MAX(3+1, 2+4); 变为, => a = (3+1 > 2+4 ? 3+1 : 2+4) => a = (4 > 6 ? 4 : 6) => a = 6 步骤 3: printf("%d\n", a); 打印变量 'a' 的值。 因此,程序的输出是 6。 下一主题C 命令行参数 |
我们请求您订阅我们的新闻通讯以获取最新更新。