这个程序为什么等于69而不是225

/*标准文档模板*/#include"Stdio.h"#include"Conio.h"#defineDOUBLE(r)r*rintmain(void){intx=9,y... /* 标准文档模板 */
#include "Stdio.h"
#include "Conio.h"
#define DOUBLE(r) r*r
int main(void)
{
int x=9,y=6,t;
t = DOUBLE(x+y) ;
printf ("%d\n",t);
getch();
return 0;
}
展开
 我来答
xshrim
2013-01-13 · TA获得超过2157个赞
知道小有建树答主
回答量:688
采纳率:66%
帮助的人:524万
展开全部
因为带参数的宏定义和函数调用是不同的,宏定义只是简单的字符替换。

DOUBLE(r) r*r 这个宏定义表示将r用r*r代替。所以放到t = DOUBLE(x+y) ;语句中就成了这样了:

t=x+y*x+y。 于是就是t=9+6*9+6=69了。它不会给你先运算x+y然后带入,它不是函数!

要想实现你要的效果,宏定义应该写成这样的:
#define DOUBLE(r) (r)*(r)
m7j14h6
2013-01-13 · TA获得超过1221个赞
知道大有可为答主
回答量:1927
采纳率:80%
帮助的人:594万
展开全部
t = DOUBLE(x+y) =9+6*9+6 = 69
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Beyond就是这样
2013-01-13 · 超过23用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:51.6万
展开全部
r*r这个公式r不是(r),所以应该是9+6*9+6=69
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式