早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道C++题目,求详解对于以下宏定义:#defineM(x)x*x#defineN(x,y)M(x)+M(y)宏调用N(2,2+5)执行后,值为AA.21B.53C.19D.51

题目详情
一道C++题目,求详解
对于以下宏定义:#define M(x) x*x #define N(x,y) M(x)+M(y)
宏调用N(2,2+5)执行后,值为A
A.21
B. 53
C. 19
D. 51
▼优质解答
答案和解析
直接代入即可,N(2, 2 + 5) = M(2) + M(2 + 5) = 2 * 2 + 2 + 5 * 2 + 5 = 21
这道题主要是考的宏调处时,编译器是怎么处理的。
编译器在这里只做简单的替换,不会给你自动加括号。
所以一般在用宏定义时,最好加上括号,才能得到想要的结果。
这这道题改成如下形式,
#define M(x) (x*x)
#define N(x,y) (M(x)+M(y))
便是写宏定义的规范形式。