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

这里是宏定义 而宏定义的规则是直接带入 也就是 f(5+2,4+1,25) =5+2*4+1-25 没有括号哦 计算 =5+8+1-25 =14-25 =-11

宏定义只执行简单的替换操作,就像你把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、y、z的值均为0;在main函数中,开始局部x、y、z的值分别是3、4、0。 执行P(x, y)后, 对main函数中局部变量x、y没有影响,因为形参不影响实参; 对其中的静态局部变量z也没有影响,...

第一次调用: x=2,y=2,z=4,输出 8 第二次调用: x=3,y=2,z=5,输出 10 第三次调用: x=4,y=2,z=6,输出 12 所以,三资输出在同一行上,就是: 8 10 12

句末没有分号

解释:if(x=y+z)成立就执行输出*** 。否则就输出### 至于x=y+z是赋值表达式来,赋值表达式的左边值是可以改变的。此处是把y+z值赋给x,即把0赋给x。所以此处的判断值是0,因此判断条件不成立。所以就执行printf ("###");

#include "stdio.h" main() { int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); } 其中x++是表明在执行完z=x后x才会自动加一,z=x++这条语句执行完后z=1,x=2 y++也是在这条语句结束后才会加一,这时y=2; ++y,是在这条语句执行...

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