问题 单项选择题

下列程序的输出结果是( )。
#include <stdio.h>
#define M(x, y) x%y
main()
int a, m=12, n=100;
a=M(n, m);
printf("%d\n", a--);

A) 2
B) 3
C) 4
D) 5

答案

参考答案:C

解析: 带参数的宏定义命令行形式如下:#define宏名(形参表)。替换文本在编译的时候编译预处理程序用“替换文本”来替换宏,即M(n, m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

单项选择题 A1/A2型题
单项选择题