📜  C预处理程序测试3

📅  最后修改于: 2020-10-23 06:01:09             🧑  作者: Mango

C预处理程序测试3

11)使用哪个运算符在下一行中继续宏的定义?

  1. $
  2. ##
  3. \

正确的选项是(d)。

说明:

没有这样的运算符,称为$。第二和第三运算符分别用于字符串化和令牌粘贴运算符。

因此,运算符’\’用于在下一行中继续宏的定义。

12)根据ANSI C选择无效的预定义宏。

  1. __DATE__
  2. __TIME__
  3. __C++__
  4. __FILE__

正确的选项是(c)。

说明:

没有使用名称__ C++ __定义这样的宏,但是__ cplusplus __是根据ANSI C规范预定义的宏。

因此,根据ANSI C,__ C++ __是无效的预定义宏。

13)在下面的程序中找出错误?

#include

int main()
{
    int j;
    #if A
        printf("Enter the number:");
        scanf("%d", &j);
    #elif B
        printf("The number is even");
    return 0;
}
  • The number is even
  • Error: unexpected end of file because there is no matching #endif
  • Garbage values
  • None of the above

正确的选项是(b)。

说明:

有条件的宏语句#如果必须有一个#ENDIF语句。在程序中,没有使用#endif语句。

因此,该程序返回错误:文件意外结尾,因为没有匹配的#endif。

14)以下哪项是C语言中正确的预处理程序指令?

  1. #undef
  2. #elif
  3. #if
  4. #ifdef

 

  1. 1 2 4
  2. 1 3 4
  3. 一四
  4. 1 2 3 4

正确的选项是(d)。

说明:

宏语句#undef未定义先前声明的宏符号。

宏语句#if #ifdef #elif称为条件宏。

因此,所有给定的语句都是C语言中正确的宏预处理程序指令。

15)下面的程序在GCC编译器上的输出是什么?

#include 
#define MEAN(p, q, r, s, t) (p+q+r+s+t)/5
int main(){
  int p=1, q=2, r=3, s=4, t=5, mn;
  mn=MEAN(p,q,r,s,t);
  printf("Mean of 5 numbers=%d\n",mn);
  return 0;
}
  1. Mean of 5 numbers=3
  2. Mean of 5 numbers=5
  3. Mean of 5 numbers=1
  4. Compile error

正确的选项是(a)。

说明:

在程序中,宏MEAN由扩展定义。

在预处理期间,将MEAN的出现替换为其扩展,然后将其发送到编译器并按以下方式执行程序:

  1. #include   
  2. int main()
  3. {
  4. 整数p = 1,q = 2,r = 3,s = 4,t = 5,mn;
  5. m =(p + q + r + s + t)/ 5;
  6. printf( “ 5个数字的平均值=%d \ n” ,mn);
  7. 返回0;
  8. }

因此,上述程序的输出为“ 5个数字的均值= 3″。