有以下程序 #include <stdio.h> #define F(x) 2.84+x #define PR(a) printf("%d" ,(int)(a)) #define PRINT(a) PR(a);putchar(’\

admin2020-10-26  62

问题 有以下程序
#include <stdio.h>
#define  F(x)      2.84+x
#define  PR(a)     printf("%d" ,(int)(a))
#define  PRINT(a)  PR(a);putchar(’\n’)
main()
{
   PRINT( F(5)*2 );
}
程序运行后的输出结果是

选项 A、12
B、13
C、15
D、11

答案A

解析 带参数的宏的调用格式:宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。将PRINT( F(5)*2 )用PR(F(5)*2);putchar(’\n’)替换,将PR(F(5)*2)用printf("%d" ,(int)( F(5)*2))替换,再将F(5)用2.84+5替换,最后替换结果为printf("%d" ,(int)( 2.84+5*2));putchar(’\n’),运行结果为:12<回车>。A选项正确。
转载请注明原文地址:https://jikaoti.com/ti/AnD0FFFM
0

最新回复(0)