#include<stdio.h> # define MUL(x,y) (x)*y main() { int a=3 ,b=4,c; c=MUL(a++,b++); printf("%d\n",c)

}

第1个回答  2011-02-19
17
第2个回答  2011-02-19
20
第3个回答  2011-02-19
不知道你这个有什么问题ma?运行结果是12本回答被提问者采纳

#include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3, b=4...
++a 是先++再运算 同上

#define SUB(x,y)(x)*y #include<stdio.h> main() {int a=3,b=4...
include<stdio.h> define SUB(x,y)(x)*y void main(){ int a=3,b=4;printf("%d\\n",SUB(a++,b++));} 结果:12 注意:大小写问题,以及声明的习惯 还有就是++(自增)的用法,这里是先执行结果,然后再进行自增,也就是执行完之后a=4,b=5 ...

#include <stdio.h> #define F(X,Y) X*Y main() { int a=3, b=4...
define G(X,Y) (X)*(Y)int main() { int a = 3, b = 4;printf("%d\\n", F(a + b, a - b));\/\/ 宏展开式为:3 + 4*3 - 4,输出为: 11 printf("%d\\n", G(a + b, a - b));\/\/ 宏展开式为:(3 + 4)*(3 - 4),输出为: -7 return 0;} ...

#include<stdio.h> #define M(x,y,z) x*y+z main() { int a=1,b=2...
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))是不一样的。

...#define MUL(r) r*r main() {int a=2,b=3,c; c=MUL(a+b)*2...
又是你 还做题啊。。。这选B 宏就是完全替换, a+b*a+b*2 =14 先说宏参数替换 把a+b 替换r 然后替换 r*r 为a+b*a+b 完全傻瓜式替换 在替换到程序里边去 就成了 a+b*a+b*2 在预编译过程中 把这段完成。后面的计算是在程序执行过程中得到的结果 c =14 ...

#include <stdio.h> #define MAX(x,y) (x)>(y)?(x):(y) void main...
这怎么会是70,分明是7啊!宏扩展是字符串替换而不是从左至右的计算。把具体字符串代进去就一目了然了:e=MAX(a+b,c+d)*10-->e=(a+b)>(c+d) ? (a+b) : (c+d)*10-->e=7>3 ? 7 : 3*10-->e=7。想成70或30,就得写成e=(MAX(a+b,c+d))*10;。

有#define MUL(x,y) x*y, 则printf("s=%d",MUL(2,2+3)):的结果.求大神...
define仅仅是字符替换,因此在将MUL(2,2+3)时,x是2,y是2+3,直接将表达式x*y替换字符后,则变成了2*2+3,其计算结果在乘法优先于加法的作用下会得到7这个数值。这里运用了PRINTF语句,所以输出的值是S=7 为了避免这种情况,有两种办法解决 定义更安全的宏定义,即使用括号将表达式括起来,...

#include <stdio.h> #define M(x,y) (x*y) main() { int m; for(m=1...
兄弟,请注意排版呀,而且代码有错吧?不知道你想问的是什么问题。代码排版如下,我修改了下:1,最后的左大括号改成了右括号。2,main前面加了个void。3,for循环后面没有语句执行就得加分号。include <stdio.h> define M(x,y) (x*y)void main() { int m;for(m=1;m<10;m++) ;} ...

# include <stdio.h> # define MAX(x,y) (x)>(y)?(x):(y) main() {...
MAX定义有问题 应该改为:# define MAX(x,y) ((x)>(y)?(x):(y))

...#define F(X,Y)(X)*(Y) main() { int a=3, b=4; printf("%d\\n...
结果等于12;运行完了之后,a = 4; b = 5;程序,结果如图:

相似回答