请教一个C语言宏定义作用的问题

N289863008 2010-02-18 09:52:35
#include <stdio.h>
#define M 5
#define N M+M

main()
{
int k;
k=N*N*5;
printf("%d\n ",k);
}

这是二级C的一道题
从常规看 N为10 N*N*5应该是500
但编译输出的k值为 55
想不明白是怎么回事 望各位大侠赐教!
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
casper_zhou 2010-02-18
  • 打赏
  • 举报
回复
#define N (M+M)
stardust20 2010-02-18
  • 打赏
  • 举报
回复
这样就会是500
#define M 5
#define N (M+M) //加个括号
昵称很不好取 2010-02-18
  • 打赏
  • 举报
回复
宏展开后是这样: N*N*5 = M+M*M+M*5 = 5 + 5*5 + 5*5 = 55
如果结果需要时500,注意加括号(N)*(N)*5
stardust20 2010-02-18
  • 打赏
  • 举报
回复
宏是直接展开的。。像这样
5+5*5+5*5

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧