📜  C预处理程序测试1

📅  最后修改于: 2020-10-23 05:57:35             🧑  作者: Mango

C预处理程序测试1

1)在哪个阶段,以下代码被文件#include的内容替换

  1. 链接期间
  2. 编辑期间
  3. 在预处理期间
  4. 执行期间

正确的选项是(c)。

说明:

在预处理阶段,带有该名称的系统头文件的行#include 将替换为文件stdio.h的内容

因此,文件’stdio.h’的整个文本将替换为#include指令。

2)C预处理程序指令#undef可以与早先#define的宏一起使用。

正确的选项是(a)。

说明:

的确,指令#undef只能与程序中早先#define的宏一起使用。

例如: #define PI 3.14

我们可以通过#undef PI取消定义PI

  1. 3)C预处理程序指令#ifdef …#elif?#endif用于条件编译。

正确的选项是(a)。

说明:

的确,像#ifdef …#elif?#endif这样的C宏用于在C程序中执行条件运算。

C预处理程序指令的语法为:

  1. #if <常量表达式>   
  2. #elif <常量表达式>   
  3. #万一  

4)以下程序的输出是什么?

#include
#define SWAP(x, y) int t; t=x, x=y, y=t;
int main()
{
    int x=10, y=20;
    SWAP(x, y);
    printf("x = %d, y = %d\n", x, y);
    return 0;
}
  1. x=10 , y=20
  2. x=20, y=10
  3. Error: Undefined symbol ‘t’
  4. Error: Declaration not allowed in macro

正确的选项是(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语句?

  1. #define CUBE(x) (X*X*X)
  2. #define CUBE(X) {X*X*X}
  3. #define CUBE (X) X*X*X
  4. #define CUBE(X) (X)*(X)*(X)

正确的选项是(d)。

说明:

带参数的宏定义的语法为:

  1. “ #define MACRO_NAME(ARG)(ARG * ARG * ARG)”   

  • 宏名称与“(args)”之间不应有空格。
  • 用作宏参数的变量区分大小写,并且其扩展名应该相同。即“ x”和“ X”是不同的变量。
  • 宏扩展应括在括号“()”内(请勿使用{}或[])。