、 #define M(x,y,z) x*y+z main() { int a=1,b=2,c=3; printf("%

问题描述:

、 #define M(x,y,z) x*y+z main() { int a=1,b=2,c=3; printf("%d",M(a+b,b+c,c+a)); } 这道题我口算结果

#define M(x,y,z) x*y+z
main()
{
int a=1,b=2,c=3;
printf("%d",M(a+b,b+c,c+a));
}
这道题我口算结果是19,答案是12,为什么?
main()
{
char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
prinft("%d",*p);
}
这道题我算对了,但是我是这样理解的,a是这个数组的地址名,所以值应该是-1,所以结果就是4,
1个回答 分类:综合 2014-09-26

问题解答:

我来补答
1 宏只是简单的替换,所以M(a+b,b+c,c+a)展开后就是:a+b*b+c+c+a = 12
2 a是这个数组的首指针,指向数组第一个元素,也就是9,a+5指向数组第6个元素,也就是4.
 
 
展开全文阅读
剩余:2000