#include<stdio.h> #define X 5 #define Y X+1 #define Z Y*X/2 main() { int a; a=Y; printf("%d %d\n",Z

结果为什么是75呢,不解,望高手指点一下... 结果为什么是7 5呢,不解,望高手指点一下 展开
 我来答
ku98ceo
推荐于2018-03-19
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
宏定义只执行简单的替换操作,就像你把X用5代替一定,Y就用X+1代替就是6,Z用Y*X/2代替,这时候要注意了,是X+1*X/2,也就是5+1*5/2,结果Z就是7,如果你#define Y (X+1),这是带了括号的,然后再去替换到Z里,又是另一个结果,(X+1)*X/2,把5带进去算就是15了,宏定义中带括号和没带括号差别很大的,要特别特别注意,因特他真的是很简单很简单的“替换”操作。
jar10302
2011-03-10 · TA获得超过137个赞
知道答主
回答量:93
采纳率:0%
帮助的人:97.9万
展开全部
printf("%d %d\n",Z ,语句不全,
Z = X + 1*X/2 = 5 + 1*5/2 = 5 +2 = 7;因为#define 定义的宏只进行单纯的替换,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水de幻想
2011-03-10 · 超过21用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:47.3万
展开全部
如果你这是完整的话,那结果应该是7,而不是7.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式