#define f(x) x*x main() { int i; i=f(4+4)/f(2+2); printf("%d\n",i); }

求输出结果

28追问

怎么算的啊?详细点的,,我会算(x*x)的

追答

4+4*4+4=28

追问

那个f(2+2)怎么没算啊??

追答

i=4+4*4+4/2+2*2+2=28

温馨提示:内容为网友见解,仅供参考
无其他回答

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

...main() { int i; i=f(4+4)\/f(2+2); printf( %d ,i);}结果不是64除...
【答案】:i=f(4+4)\/f(2+2) \/\/f(4+4)被替换成4+4*4+4,f(2+2)同理 =4+4*4+4\/2+2*2+2 =4+16+2+4+2 =28

...x*x main() { int i; i=f(4+4)\/f(2+2); printf("%d\\n",i); }...
28

...x*x) main( ) { int i; i=f(4+4)\/f(2+2); printf("%d\\n",i...
得 (4+4*4+4)\/(2+2*2+2) 所以结果是 3

...x*x main( ) { int i; i=f(4+4)\/f(2+2); printf(“%d”,i); }...
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是...

...x*x main( ){ int i; i=f(4+4)\/f(2+2); printf(“%d”,i);} 结果...
i=f(4+4)\/f(2+2);根据宏f(x)x*x 替换的 i= 4+4*4+4\/2+2*2+2 = 28 没有括号的 宏不是函数 他是直接替换的 所以最好这样#define f(x)((x)*(x))这样就不会出错了

...i1,i2; i1=f(8)\/f(4); i2=f(4+4)\/f(2+2); printf("%d,%d\\n",i1...
你是四川的?你一定要注意括号,没括号算的时候就不能加括号,第一个是(8*8)\/(4*4)=4 第二个是 (4+4*4+4)\/(2+2*2+2)=24\/8=3

C语言宏定义计算问题
答案是21 因为你定义的f(x) x*x ,而你下面的i=f(4+4)\/(2+2)中是讲4+4作为x的值,所以展开的时候是这样的, i=4+4*4+4 \/(2+2),所以结果是 i=4+16+1 ,当然是21了

关于#define 的一个简单的宏定义运算
你用错了。如果想得到8,应该将 define f(x) x*x 改成 #define f(x) (x*x)宏定义的概念就相当于 #define ABC DEF 下面遇到ABC的地方都以DEF代替,这么一来。你写的: i=f(4+4)\/f(2+2);就成: i= 4+4 * 4+4 \/ 2+2 * 2+2 ;自己算算是不是应该等于28...

#define f(x) x*x*x main() { int a=3,s,t; s=f(a+1);t=f((a+1...
要这样定义宏:#define f(x) (x)*(x)*(x)不然有二义性的。像你这样定义f(x) x*x*x;传f(a+1)实际上运行的是f(a)+f(1)

相似回答
大家正在搜