#define f(x) x*x*x main() { int a=3,s,t; s=f(a+1);t=f((a+1)); printf("%d,%d\n",s,t); } 程序运行结果

急求大神指点
其他的不会打了 我运行总是错误

第1个回答  2012-02-22
要这样定义宏:#define f(x) (x)*(x)*(x)
不然有二义性的。
像你这样定义f(x) x*x*x;
传f(a+1)实际上运行的是f(a)+f(1)追问

那正确的答案应该是多少呢

追答

正确答案?你这条是题···?额,如果你是想得到一个数的三次方积··那正确答案是64啊··上面分析了的··你看你输出··一个是10,一个是64,这两个结果我都做了分析的了···难道你代码没放完整上去?

追问

那结果是10,64 还是64,64啊

追答

你的程序输出是10跟64....你没输出过?。。

追问

我这总出错啊
一大溜错误信息 你咋输出的啊

追答

#include
#define f(x) x*x*x
int main() {
int a=3,s,t;
s=f(a+1);
t=f((a+1));
printf("%d,%d\n",s,t);
return 0;
}

本回答被提问者采纳
第2个回答  2012-06-02
3+1x3+1X3+1=10

...a=3,s,t; s=f(a+1);t=f((a+1)); printf("%d,%d\\n",s,t); } 程序...
要这样定义宏:#define f(x) (x)*(x)*(x)不然有二义性的。像你这样定义f(x) x*x*x;传f(a+1)实际上运行的是f(a)+f(1)

...main() { int a,k=3,m=1; a=S(k+m) printf("%d",a);怎么做啊_百度...
define S(x) x*x 问题就出现在这句话上,就是误认为S(x)就是代表x*x的结果,其实不是就是代表中间有一个乘号, a=S(k+m)是用到s(x)了,就是k+m*k+m,运行是 3 + 1 * 3 + 1,x就是代表k+m 而不是k+m的值,所以你不懂的地方就是这里了 ...

...S(x) (x)*x*2 main(){int k=5,j=2;printf("%d,",S[k+j]); print...
正确答案是49,1(运行过)解析:S(K+J)就是将x的地方都替换为k+j,所以替换之后S(K+J)等同于(k+j)*k+j*k+j*2 = (5+2)*5+2*5+2*2=49 那么同理S(K-J)等同于(k-j)*k-j*k-j*2 = (5-2)*5-2*5-2*2=1

...#define F(X,Y)(X)*(Y) main() { int a=3, b=4; printf("%d\\n",F...
++a 是先++再运算 同上

#define f(x) x*x main () { int a=6,b=2,c; c=f(a)\/f(b): printf...
答案36;步骤:c=f(a)\/f(b)=a*a\/b*b=6*6\/2*2=36 修改后代码 include<stdio.h> define f(x) x*x void main (){ int a=6,b=2,c;c=f(a)\/f(b);printf("%d\\n",c);}

#define F(X,Y) X*Y main(){int a=3,b=4;printf("%d\\n",F(a+b,a-b...
F(a+b,a-b) 代入到X*Y相当于a+b*a-b=3+4*3-4=11,没错的,如果答案是-7说明答案错了。

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

...#define f(x) x*x main( ) { int i; i=f(4+4)\/f(2+2); printf("%d...
答案是:A 这是因为宏定义只是简单的数据带入而已,不同于函数 f(4+4)\/f(2+2)=4+4*4+4\/2+2*2+2=28

#define f(x) x*x main () { int a=6,b=2,c; c=f(a)\/f(b): printf...
答案36;步骤:c=f(a)\/f(b)=a*a\/b*b=6*6\/2*2=36 修改后代码 include<stdio.h> define f(x) x*x void main (){ int a=6,b=2,c;c=f(a)\/f(b);printf("%d\\n",c);}

#define f(x) x*x main( ) { int i; i=f(4+4)\/f(2+2); printf(“%d...
1、那么也就是f(4+4)代表着x是4+4,x*x替换一下后就变成了4+4*4+4 2、同理f(2+2);替换为了2+2*2+2 3、最后f(4+4)\/f(2+2);就是4+4*4+4\/2+2*2+2 并且由于其中的除号"\/"优先级比+号高,所以得出结果是28 二、printf("%d\\n",i);prtinf是产生格式化输出的函数,%d是...

相似回答