📜  C预处理程序测试2

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

C预处理程序测试2

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

#include 
#define DEF
int main(){
  int j=3;
  #ifdef DEF
    printf("square of j=%d\n",j*j);
  #else
    printf("j=%d\n",j);
  #endif
  return 0;
}
  1. square of j=9
  2. j=3
  3. Compile error
  4. No output

正确的选项是(a)。

说明:

在程序#ifdef中,#else和#endif是预处理程序命令。

如果宏DEF是由#define语句定义的,则#ifdef之后的代码将立即编译,否则将执行#else和#endif命令之间的代码。由于已经定义了DEF ,因此#ifdef DEF评估为true,因此将计算并打印’j’的平方,即9。

在定义宏DEF时,不必对宏语句提供扩展,因为在程序中我们没有使用宏扩展的值。

因此,程序的输出为j = 9的平方。

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

#include
#define IT 0.1
#define HRA 0.2
#define DA 0.3
int main()
{
float bas_sal, net_sal;
bas_sal=1000;
net_sal=bas_sal*(1+HRA+DA-IT);
printf("Gross salary=%f\n", net_sal);
return 0;
}
  1. Gross salary=1000
  2. Gross salary=1400
  3. Compile error
  4. No output

正确的选项是(b)。

说明:

当预处理器将程序发送给IT编译时,HRA和DA分别被替换为0.1、0.2和0.3。将bas_sal设置为1000,净工资的计算公式为:

  1. net_sal = bas_sal *(1 + 0.2 + 0.3-0.1);

语句printf(“总薪水=%f \ n”,net_sal);打印结果。因此输出的输出:

工资总额= 1400

8)头文件必须具有.h扩展名吗?

  1. Yes
  2. No

正确的选项是(b)。

说明:

否,头文件可以具有任何扩展名。头文件不必具有.h扩展名。

9)哪个头文件用于支持malloc()和calloc()函数。

  1. stdio.h
  2. math.h
  3. stdlib.h
  4. memory.h

正确的选项是(c)。

说明:

void * calloc(size_h nitems,size_h size):函数calloc()需要double参数。

void * malloc(size_h size):函数malloc()需要单个参数。

为了支持该函数-需要malloc()和calloc() stdlib.h头文件。

10)宏语句的执行速度快于函数。

正确的选项是(a)。

说明:

宏语句可以更快地执行,而无需上下文切换,因为在调用行扩展了宏的代码。

因此,以上说法是正确的。