哪位能解答一下为什么答案是B?

#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}A... #define MIN(x,y)(x)<(y)?(x):(y)
main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A)10
B)15
C)100
D)150
我和运算也是C,不过答案不是,所以我才上来问的。
main()
{
int a=2;a%=4-1;
printf("%d",a);a+=a*=a-=a*=3;
printf("\n%d",a);
}
A)2,12 B)-1,12
C)1,0 D)2,0
答案为什么是D?
我的分不多,所以希望哪位好心人能帮忙了,谢谢了。
展开
 我来答
撒旦的侍从
2010-09-01 · 超过11用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:26.6万
展开全部
k=10*MIN(i,j)等价于 k=10*10<15?10:15 ,优先10*10==100,所以就是k=100<15?10:15,应该是B;
a%=4-1,也是优先级问题,a=a%(4-1),所以是2;a+=a*=a-=a*=3从右往左运算赋值,因为有a=a-a,所以为0,答案是D。
在蕲州古城冲浪的金鱼草
2010-08-30 · TA获得超过460个赞
知道小有建树答主
回答量:755
采纳率:0%
帮助的人:592万
展开全部
#define MIN(x,y)(x)<(y)?(x):(y)

这个宏用的是三目运算符 条件?真:假 。

k=10*MIN(i,j);
可以理解成:
if(i<j) k=10*i; else k=10*j;

答案应该是C;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lightyakami
2010-09-01 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:111万
展开全部
第一个明显是C,不多说了,LZ相信自己吧。
第二题:

a%=4-1即为 a=a%3,易得a=2;
a+=a*=a-=a*=3即可分解为下列几式:
因为"=","*="等符号的结合律顺序为从右到左,因此有

a=a*3=2*3=6;
a=a-a=0;
a=a+a=0;
所以最终a=0;
其实在这个式子中a取任何值结果都为0。

所以选D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式