| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:大神,帮我看一下这个程序,看不太懂
只看楼主 加入收藏
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
结帖率:70%
收藏
已结贴  问题点数:10 回复次数:2 
大神,帮我看一下这个程序,看不太懂
# include <stdio.h>
# define MAX(a,b)  (a)>(b)?(a):(b)
# define SQUARE(x)  x*x
# define DOUBLE(x) x+x

int main()
{
    int x,y,z;
    y=2;
    z=3;
    x=MAX(y,z);
    printf("%d %d %d\n",x,y,z);

    y=2;
    z=3;
    x=MAX(++y,++z);
    printf("%d %d %d\n",x,y,z);

    x=2;
    y=SQUARE(x);
    z=SQUARE(x+6);
    printf("%d %d %d\n",x,y,z);

    x=2;
    y=3;
    z=MAX(5*DOUBLE(x),++y);
    printf("%d %d %d\n",x,y,z);

    return 0;

}
输出结果是这样的:
3 2 3
5 3 5   //不明白为什么是这个结果,求解答
2 4 20  //这个也不懂
2 4 12  //这个也不懂
Press any key to continue
搜索更多相关主题的帖子: include return 
2014-05-27 11:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
x=MAX(++y,++z);
展开后是 x = (++y)>(++z)?(++y):(++z)
2014-05-27 11:44
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:5 
程序代码:
# include <stdio.h>
# define MAX(a,b)  (a)>(b)?(a):(b)
int main()
{
    int x,y,z;
    y=2;
    z=3;
   /*x=MAX(++y,++z);*/
   x=(++y)>(++z)?(++y):(++z);
    printf("%d %d %d\n",x,y,z);
    return 0;
}

得到5 3 5,写成这这样能看懂吗?在得到x的过程中y自增一次+1,而z却自增2次+2,最后x=z=5
2014-05-27 11:44
快速回复:大神,帮我看一下这个程序,看不太懂
数据加载中...
 
   



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

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