请教一个C语言的问题?

Kyori_YR 2005-03-02 07:50:50
#include <stdio.h>
#define N 2
#define M N+1
void main()
{
printf("%d\n",M*M);
}
运行结果为什么是5?
...全文
339 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyz0418 2005-03-15
  • 打赏
  • 举报
回复
回复人: insulator(天外来客) ( ) 信誉:100 2005-03-02 19:57:00 得分: 0


M*M=========>N+1*N+1=================>2+1*2+1=5
所以等于5了


#define M (N+1)就是9了


xiaoran2267 2005-03-15
  • 打赏
  • 举报
回复
yegaofei 2005-03-15
  • 打赏
  • 举报
回复
这个也是宏定义的一个缺陷
galanz 2005-03-15
  • 打赏
  • 举报
回复
既然大家都回答了……
就把分给我这个没有回答问题的人吧!!!~~
diaosan 2005-03-15
  • 打赏
  • 举报
回复
前两天不是有一个一模一样的问题吗?
自己因改搜一下先~
wanglianhui 2005-03-14
  • 打赏
  • 举报
回复
楼主要多动脑哟....2+1*2+1=5
不是吗?M=N+1*N+1?把M=N+1带进去呀...
cooleader320 2005-03-14
  • 打赏
  • 举报
回复
读书不唯书,好学且会学!
cdo 2005-03-03
  • 打赏
  • 举报
回复
我到今天才明白这个:)
sanhill 2005-03-03
  • 打赏
  • 举报
回复
多看书,少发问!
基本概念,基本知识!
Flood1984 2005-03-03
  • 打赏
  • 举报
回复
#define宏只是起替换作用,
他并不是把所定义的东西作为一个整体,
#define M N+1
3*M
将M替换成N+1,
那么就是3*N+1,
依此可以得出楼主的结论
hjf00005 2005-03-03
  • 打赏
  • 举报
回复
up
guo_com 2005-03-03
  • 打赏
  • 举报
回复
楼上这样就对了.
yuchengliu 2005-03-03
  • 打赏
  • 举报
回复
#include <stdio.h>
#define N 2
#define M (N+1)
void main()
{
printf("%d\n",M*M);
}
你是不是想这样?
这样的结果是9
永远的摩西 2005-03-03
  • 打赏
  • 举报
回复
楼上的正解啊
kuny1130 2005-03-03
  • 打赏
  • 举报
回复
up !!!!

初写程序的时候很容易忽视的问题~!
diaosan 2005-03-03
  • 打赏
  • 举报
回复
回复人: sanhill() ( ) 信誉:100 2005-03-03 09:40:00 得分: 0
多看书,少发问!
基本概念,基本知识!
-------------------
nod
monkey19821215 2005-03-02
  • 打赏
  • 举报
回复
哭了 晚了
cnwolf 2005-03-02
  • 打赏
  • 举报
回复
#define N 2
#define M N+1

M*M = N+1*N+1 = 2+1*2+1 =5
lostboy7932 2005-03-02
  • 打赏
  • 举报
回复
来晚了,记得以后宏定义算式时加上括号
liubingqian 2005-03-02
  • 打赏
  • 举报
回复
上面写错了,应该是想得到9,就要#define M (N+1)
加载更多回复(5)

69,382

社区成员

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

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