nynw.net
当前位置:首页 >> #inCluDE <stDio.h> #DEFinE M(x,y,z) x*y+z int mAi >>

#inCluDE <stDio.h> #DEFinE M(x,y,z) x*y+z int mAi

M(a+b,b+c,c+a) 等价于 a+b*b+c+c+a = 1+2*2+3+3+1 = 12 就是把a+b b+c c+a 替换进 x*y+z

M(x,y,z) x*y+z x:a+b=1+2 y:b+c=2+3 z:c+a=3+1 代入 x*y+z=1+2*2+3+3+1=12。没问题。 注意在预编译部分题目怎么写的,你就按照他写的格式直接把数代入就行了,不能给题目加括号。M(x,y,z)和M((x),(y),(z))是不一样的。

答案是7和5 a应该没问题,问题在z吧 要注意的是#define z y*x/2并不是把y=6,x=5直接代入计算 而是要把y=x+1整体代入 也就是z=x+1*x/2(而且这里的x+1没有括号) 然后把x=5代入,得到z=5+2=7

12 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代替,这时候要注意了,是X+1*X/2,也就是5+1*5/2,结果Z就是7,如果你#define Y (X+1),这是带了括号的,然后再去替换到Z里,又是另一个结果,(X+1)*X/2,把5带...

因为(x+z)*y*z不存在等于532的情况

你是想问为什么输出的时候,y和z都不是1是吧。 ++x||++y&&++z,在执行时,||以及&&的优先级较低。所以先运行++x,然后执行||,此时x为1,所以已经正确了,就不需要执行后面的++y&&++z。所以y和z都保持不变。

这是宏替换的特点! 宏替换是在编译时,将源程序中与宏定义符合的代码进行“傻瓜”式替换。 如: #define MAX(x,y,z) x*(y)+z printf("%d/n", MAX(a+b.b+c,c+a) ); 在编译时替换成printf("%d/n", a+b*(b+c)+c+a ); 而 #define MAX(x,y,z) x*y+z pr...

用一个三重循环 #include #include int main() { int x; x = (int)sqrt(2000.0); for(int i = 0;i

这个主要是形参与实参的关系 。 在函数的参数列表里的,是形参,它是对实参的一个拷贝, 但是它们不是在内在同一个块。所以对形参的改变不会影响实参的值 。 c++可以通过引用,也就是别名来改变, 比如把函数定义成 void fun(int,int,int &) 这...

网站首页 | 网站地图
All rights reserved Powered by www.nynw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com