[请教]初学者提问。
#define N 3
#define Y(n)((N+1)*n)
则执行语句:z=2 *(N+Y(5+1));后,z的值为
答案是 48,我怎么算是54啊?
问题点数:10、回复次数:8Top
1 楼syuui(syuui)回复于 2003-09-01 14:57:09 得分 0
z = 2*(N+(N+1)*5+1 ) = 2*( 3 + (3+1)*5+1 ) = 48Top
2 楼51dianying()回复于 2003-09-01 15:01:37 得分 0
为啥不是:
z= 2 * (N + (N+1)*(5+1))=54呢 Y(5+1)不是等于((N+1)*(5+1))吗?麻烦请解释一下,多谢!Top
3 楼ppby2002(lovewolf)回复于 2003-09-01 15:07:18 得分 0
这正是宏容易出错的地方啊Top
4 楼syuui(syuui)回复于 2003-09-01 15:07:28 得分 10
宏代换嘛。
它只是简单地把n换成5+1了。它不会去管应不应该有括号。Top
5 楼syuui(syuui)回复于 2003-09-01 15:09:11 得分 0
n是换成了5+1。
Y(n)就是把Y里所有的n换成5+1。Y(n)的括号是宏定义的。不是宏的值。别想错了。呵呵Top
6 楼syuui(syuui)回复于 2003-09-01 15:10:27 得分 0
如果想得54,这样定义宏:
#define Y(n) ((N+1)*(n))
Top
7 楼jyfcsdn()回复于 2003-09-01 15:12:15 得分 0
宏就是替换,所以n的地方替换为5+1,而不是(5 + 1)Top
8 楼51dianying()回复于 2003-09-01 15:21:07 得分 0
啊,原来是这样!谢谢大家!:)Top




