www.fltk.net > #DEFinE M(x,y,z) x*y+z mAin() { int A=1,B=2, C=3; ...

#DEFinE M(x,y,z) x*y+z mAin() { int A=1,B=2, C=3; ...

M(x,y,z) x*y+z x:a+b=1+2 y:b+c=2+3 z:c+a=3+1 代

12 M(a+b,b+c,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12

输出12 宏不是函数,只是逐字替换,它会把M(a+b,b+c, c+a)变成1+2*2+3+3+1

这是宏替换的特点! 宏替换是在编译时,将源程序中与宏定义符合的代码进行“傻瓜”式替换。 如:

M(a+b,b+c,c+a) 等价于 a+b*b+c+c+a = 1+2*2+3+3+1 = 12

宏定义只执行简单的替换操作,就像你把X用5代替一定,Y就用X+1代替就是6,Z用Y*X/2代替,这时

你这个程序想要实现什么?你这个程序没有问题,只是你在考虑判断循环结束的条件上有问题,当还没有进行就已

因为参数是“值传递”,调用sub函数时,只是把值传了过去,并不会改变a、b、c三个变量。所以打印出的

按照运算符优先级别 由高到低 分别为: > && = 所以 c=(

推荐回答结果是x=-1,y=-1,z=1。首先判断-a=b+,-a的值是0,b+的值也是0,显然成立

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com