求解一道C语言题,程序如下

#include<stdio.h>#defineMAX(A,B)A>B?A:B#defineMIN(A,B)A<B?A:Bvoidmain(){inta,b,c,d,t;... #include <stdio.h>
#define MAX(A,B) A>B?A:B
#define MIN(A,B) A<B?A:B
void main()
{ int a,b,c,d,t;
a=1;b=2;c=3;d=4;
t=MAX(a,b)+MIN(c,d);
printf("t=%d\n",t);
}

答案为什么是4,不是等于5吗,求会的帮我解答一下,谢谢。
展开
 我来答
爱上夜色深沉
2012-05-20 · TA获得超过459个赞
知道小有建树答主
回答量:377
采纳率:100%
帮助的人:345万
展开全部
宏定义你可以理解为字符串替换,所以t=MAX(a,b)+MIN(c,d);用宏定义的字符串代肆汪替然后代入数字
也如雹乎就是t=1>2? 1:2+3<4? 3:4;
于是你看这个式子,你说答案是几,当然是4而不是渣悉5
adoqq_bd
2012-05-20 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1612万
展开全部
宏替换后:
t=1>2?1:2+3<核派尘羡碧4?3:4
是这改禅样组合的
t=(1>2?1:(2+3))<4?3:4
就是
t=5<4?3:4; 最后t就是4了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇上新通
2012-05-20 · TA获得超过1372个赞
知道小有建树答主
回答量:1743
采纳率:50%
帮助的人:527万
展开全部
讲解如下:
请先看这个程序,你会发现,结果就蠢渣是5;
#include <stdio.h>
#define MAX(A,B) A>B?A:B
#define MIN(A,B) A<B?A:B
void main()
{ int a,b,c,d,t,w,q;
a=1,b=2,c=3,d=4;
t=MAX(a,b)+(MIN(c,d));//注意这儿的括号!!!//
printf("败档铅t=%d\n",t);
}但是察好,当你把,程序写成: t=MAX(a,b)+MIN(c,d);时,结果就是4,而不是5!。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
r1renhw
2012-05-20 · TA获得超过1577个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:420万
展开全部
/*
宏是替换,而不是枝扰启返猛如回结果
t=MAX(a,b)+MIN(c,d);
t = (a>李码b ? a:b) + c<d ? c:d;
= ((a>b ? a:b)+c)<d ? c:d;
= ((1>2 ? 1:2)+c)<d ? c:d;
= (2+c)<d ? c:d;
= 5<4 ? 3:4
= 4
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
书来了
2012-05-20 · 好书推荐 | 知识分享 | 读书成长
书来了
采纳数:105 获赞数:579

向TA提问 私信TA
展开全部
你要迟掘明白宏定义的意思
他要做的就是简单的替换
所以
将 t=MAX(a,b)+MIN(c,d);
替换后就成了
t= a>b?a:b+c<d?c:d;
就码慧核成了
t= (a>b?a:b+c)<d?c:d;
所以就等于4了碧备
你将
#define MAX(A,B) A>B?A:B
#define MIN(A,B) A<B?A:B
改成
#define MAX(A,B) (A>B?A:B)
#define MIN(A,B) (A<B?A:B)
就等于5了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜相逢_123
2012-05-20 · TA获得超过732个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:465万
展开全部
t=MAX(a,b)+MIN(c,d)被替换成:
a>b?a:b+c<d?c:d
+优先级最高,所以先运算b+c,b+c=5,
所以表达式变成笑烂巧:a>历桥b?a:5<d?c:d
a>b(1>2)为false ,所以a>b?a:5<d?c:d 返回5<d?c:d
5<d(5<4)为false; 所以5<碰键d?c:d返回d(d=4)
所以t=4;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式