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

c语言宏定义已知宏定义#definep(x,y,z)x=y*z;,则宏替换p(a,x+5,y-3.1)应为()。~~~~~~~~~~~A.a=x+5*y-3.1;~~~~~~~~~B.a=(x+5)*(y-3.1);~~~~C.a=x+5*y-3.1~~~~~~~~D.a=(x+5)*(y-3.1)请问c为什么不对

题目详情
c语言宏定义
已知宏定义#define p(x,y,z) x=y*z;,则宏替换p(a,x+5,y-3.1)应为( )。 ~~~~~~~~~~~ A.a=x+5*y-3.1; ~~~~~~~~~ B. a=(x+5)*(y-3.1); ~~~~ C. a=x+5*y-3.1 ~~~~~~~~ D. a=(x+5)*(y-3.1)
请问c为什么不对
▼优质解答
答案和解析
C语言的宏机制就是按位置替换,不加其它修饰
那么x的位置替换成a
y的位置替换成x+5
z的位置替换成y-3.1
最后就出来了一个和本意不同的式子
a=x+5*y-3.1;
这里还要注意定义宏的时候不需要分号
所以x=y*z;后面那个分号也是宏的
C没有那个分号,所以错啦~