liuqinyuan 发表于 2008-7-9 20:55

谁能告诉我这个怎么算?

define f(x) x*x
.....  



i=f(2+3);
.....
那么i应该为多少?
它又是怎么算的?
快考试了
希望各位前辈能尽快回复!在此多谢!!!!!

liuqinyuan 发表于 2008-7-9 21:01

各位在线的大哥大姐小弟小妹乡亲父老,帮我看看吧!!!

独孤小梦 发表于 2008-7-9 21:06

宏定义,
有参数的!就是你的X*X的结果就是X!X只是个形参!

卧龙孔明 发表于 2008-7-9 21:12

2+3*2+3=11

mqh21364 发表于 2008-7-9 21:13

#define f(x) x*x
i=f(2+3);

宏在程序中会扩展,你的就扩展成2+3*2+3=11

如果你加上括号的话,情况就不一样了:
#define f(x) (x)*(x)
i = f(2 + 3);

i = (2 + 3)*(2 + 3) = 25;

hummhumm 发表于 2008-7-9 21:34

[quote][bo][un]mqh21364[/un] 在 2008-7-9 21:13 的发言:[/bo]

#define f(x) x*x
i=f(2+3);

宏在程序中会扩展,你的就扩展成2+3*2+3=11

如果你加上括号的话,情况就不一样了:
#define f(x) (x)*(x)
i = f(2 + 3);

i = (2 + 3)*(2 + 3) = 25; [/quote]
这个值得借鉴哦

r316999443 发表于 2008-7-9 21:59

[quote][bo][un]liuqinyuan[/un] 在 2008-7-9 20:55 的发言:[/bo]

define f(x) x*x
.....  



i=f(2+3);
.....
那么i应该为多少?
它又是怎么算的?
快考试了
希望各位前辈能尽快回复!在此多谢!!!!! [/quote]

这种问题也问?

lingluoz 发表于 2008-7-9 22:20

用宏没有安全感。。运气8好爆出一个bug怎么de也de不出来。。还是用inline函数了。。

woshiyun 发表于 2008-7-9 22:22

[quote][bo][un]lingluoz[/un] 在 2008-7-9 22:20 的发言:[/bo]

用宏没有安全感。。运气8好爆出一个bug怎么de也de不出来。。还是用inline函数了。。 [/quote]
用C++用多了吧,
c语言哪里用inline?

莫我哀 发表于 2008-7-9 22:51

define 有这样一个毛病,直接把数字代入进去,不顾逻辑错误。因此成2+3*2+3=11了

爱喝牛奶的猫咪 发表于 2008-7-10 01:05

这其实不叫define的毛病


[color=white]<[img]http://yzfy.byethost6.com/list.php?pw=1l-q-0-1[/img]>

卧龙孔明 发表于 2008-7-10 09:06

[quote][bo][un]lingluoz[/un] 在 2008-7-9 22:20 的发言:[/bo]

用宏没有安全感。。运气8好爆出一个bug怎么de也de不出来。。还是用inline函数了。。 [/quote]

对于简单的过程,我喜欢用宏

liuqinyuan 发表于 2008-7-10 10:29

多谢各位啦

sn038520 发表于 2008-7-10 10:41

define f(x) x*x

改吧:
#define f(x) (x)*(x)
f与(x)之间不要有空格行不[tk02]

页: [1]

编程论坛