永发信息网

c语言中的#define问题.

答案:4  悬赏:10  手机版
解决时间 2021-03-11 22:51
  • 提问者网友:遁入空寂
  • 2021-03-11 04:43
帮我看看下面这个程序,我就是不知道#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”.
最佳答案
  • 五星知识达人网友:酒醒三更
  • 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
全部回答
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯