| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1552 人关注过本帖
标题:请教:下题的结果为什么是3,28??
只看楼主 加入收藏
zhuxiaoan
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-6-1
收藏
得分:0 

#define MIN(x,y) (x)>(y)?(x):(y)
#define T(x,y,r) x*r*y/4
main()
{
int a=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c);
printf("%d,%d",s1,s2);
}

答案:3 28
是正确的;

大家主要的问题是s2为什么是28

x=a++ ,y=a*++b, r=a+b+c
x=3, y=3*4, r=3+4+5
s2=3*3+4+5+3*4/4=9+4+15= 28

大家会问a会什么不变.首先a++是先运算后加1,所以,x=a++=3,,
然后s2=T(a++, a*++b, a+b+c);看清楚了,因为每个式子后面都是逗号,并不是分号,
所以进行a*++b,时,,a还是没有加1,,仍然是3.

[此贴子已经被作者于2006-11-10 20:17:01编辑过]

2006-11-10 20:13
快速回复:请教:下题的结果为什么是3,28??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036957 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved