帮我看看下面这个程序,我就是不知道#define的问题:
#define M(x,y,z) x*y+z
main()
{
int a=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+d));
}
上面那段程序的运行结果是什么啊?什么算的啊?
不好意思,c+d中的”d”改成”a”.
c语言中的#define问题.
答案:4 悬赏:10 手机版
解决时间 2021-03-11 22:51
- 提问者网友:遁入空寂
- 2021-03-11 04:43
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-03-11 05:07
#define M(x,y,z) x*y+z 展开此宏时不能自行加括号,直接原形展开即可
由int a=1,b=2,c=3;
得M(a+b,b+c,c+a)=a+b*b+c+c+d=1+2*2+3+3+1=12
由int a=1,b=2,c=3;
得M(a+b,b+c,c+a)=a+b*b+c+c+d=1+2*2+3+3+1=12
全部回答
- 1楼网友:掌灯师
- 2021-03-11 08:51
程序错误
c+d的d没定义
- 2楼网友:归鹤鸣
- 2021-03-11 07:35
你的理解是不对的,
#ifdef global_variables_here
#undef extern
#define extern
#endif
应该这样理解:
如果定义了global_variables_here
不管extern是否定义过,都取消他之前的定义
重新定义extern
这种做法的目的在于防止extern重定义,比如你在另外一个文件中定义过了extern的话,你不做#undef的操作,直接在现在这个文件中#define extern是错误的做法,因为编译器不知道该用哪个宏定义。
- 3楼网友:执傲
- 2021-03-11 06:05
展开后为:
a + b * b + c + c + a
即
1 + 2 * 2 + 3 + 3 + 1 = 12
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯