| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1841 人关注过本帖
标题:【讨论】如何返回两个数中较大的数
只看楼主 加入收藏
永久的守护
Rank: 1
等 级:新手上路
威 望:2
帖 子:425
专家分:6
注 册:2007-6-9
收藏
得分:0 
[bo][un]卧龙孔明[/un] 在 2008-7-31 20:05 的发言:[/bo]

easy....

int max(int x,int y)
{
    return (((x-y)&(1<<32)*y + (((y-x)&(1<<32)*x;
}

果然厉害 只是我那是unsigned
你得先转换一下

见了便做做了便放下了了有何不了,慧生于觉觉生于自在生生还是无生。
活则生变,简而至稳。
2008-07-31 20:09
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
突然发现刚才打错了


#include<stdio.h>
#include<stdlib.h>

int max(int x,int y)
{
    return (((x-y)&(1<<31))>>31)*y + (((y-x)&(1<<31))>>31)*x;
}

int main(void)
{
    int x,y;
    scanf("%d%d",&x,&y);
    printf("%d\n",-max(x,y));
    system("pause");
    return 0;
}

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-31 20:10
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
如果用函数,用这个:

程序代码:
int max(int x,int y)
{
    return -(((x-y)&(1<<31))>>31)*y - (((y-x)&(1<<31))>>31)*x;
}

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-31 20:12
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
发现flyue的方法更好啊...

不过他那个如果要求输出最大的数,单是这么写
程序代码:
int max(int x,int y)
{
    return (x/y)*x + (y/x)*y;
}
是错误的。

[[it] 本帖最后由 卧龙孔明 于 2008-7-31 20:22 编辑 [/it]]

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-31 20:16
永久的守护
Rank: 1
等 级:新手上路
威 望:2
帖 子:425
专家分:6
注 册:2007-6-9
收藏
得分:0 
[bo][un]卧龙孔明[/un] 在 2008-7-31 20:12 的发言:[/bo]

如果用函数,用这个:


int max(int x,int y)
{
    return -(((x-y)&(131)*y - (((y-x)&(131)*x;
}
 

CSDN上的一个:
inline   int   signof(int   i){     
          return   unsigned(i)   >>   (sizeof   (int)   *   8   -   1);     
}     
      
int   max(int   a,   int   b){     
          int   p[2];     
          p[0]   =   a;     
          p[1]   =   b;     
      
          return   p[signof(p[0]   -   p[1])];     
}     

据说还有很多种方法

见了便做做了便放下了了有何不了,慧生于觉觉生于自在生生还是无生。
活则生变,简而至稳。
2008-07-31 20:22
永久的守护
Rank: 1
等 级:新手上路
威 望:2
帖 子:425
专家分:6
注 册:2007-6-9
收藏
得分:0 
[bo][un]卧龙孔明[/un] 在 2008-7-31 20:16 的发言:[/bo]

发现flyue的方法更好啊...

不过他那个如果要求输出最大的数,单是这么写
int max(int x,int y)
{
    return (x/y)*x + (y/x)*y;
}
是错误的。

有0除的危险

见了便做做了便放下了了有何不了,慧生于觉觉生于自在生生还是无生。
活则生变,简而至稳。
2008-07-31 20:23
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]永久的守护[/un] 在 2008-7-31 20:23 的发言:[/bo]


有0除的危险


这个错误不单是除以0。还有一个问题是,如果是9,4之类的数据,也就是有一个数据的二倍小于等于另一个数,那么,得到的结果是错误的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-31 20:27
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
int max(int x,int y)
{
    return (x/y)*x + (y/x)*y;
}
这段代码是错的。

without further ado, let’s get started
2008-07-31 20:29
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]iFreeBSD[/un] 在 2008-7-31 20:29 的发言:[/bo]

int max(int x,int y)
{
    return (x/y)*x + (y/x)*y;
}
这段代码是错的。


....希望您看完我的帖子,贴中的最后我说过了,这个代码是错误的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-31 20:31
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
我在测算代码时没有刷新页面,没看到

without further ado, let’s get started
2008-07-31 20:32
快速回复:【讨论】如何返回两个数中较大的数
数据加载中...
 
   



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

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