原帖由 "紫云飞扬" 发表:
用printf将两个int数据打印出来。
然后你盯着屏幕很容易找出较大的那个的。
原帖由 "FH" 发表:
A0110A的对么?一个很大的正数和一个很小的负数比较会得什么?
用8位来看吧:127-(-12=-1,由于高位是1,所以该函数返回-128!
原帖由 "spring2spring" 发表:
这样如何?
int
new_max (int a, int b)
{
return a>;b?a:b;
}
原帖由 "A0110A"]我只是选择性地测了一下,在x-y溢出后就不会为0。[/quote 发表:
这是不可能的。
[quote]原帖由 "A0110A" 发表:
复制代码
- int
- max(int x,int y)
- {
- int buf[2]={x,y};
- unsigned int z;
- int c;
- z=x-y;
- c=x-y;
- z>;>;=31;
- z= ((x-c-y)&&1)^z;
- return buf[z];
- }
max of 2147483647, -2147483648 is -2147483648
原帖由 "daniel-hou" 发表:
接改为
z=0^z;
原帖由 "win_hate" 发表:
max of 2147483647, -2147483648 is -2147483648
ps>; A0110A 的第2个代码很好的, 第1个代码也给大家指出了一个方向。谢谢A0110A。
原帖由 "svenwang" 发表:
int max(int a, int b)
{
int pair[2] = {a, b};
return pair[a < b];
}
原帖由 "FH" 发表:
呵呵,还是用127和-128验证一下8位的情况就知道了。
请楼上的作者自己验算一下。
原帖由 "紫云飞扬" 发表:
用printf将两个int数据打印出来。
然后你盯着屏幕很容易找出较大的那个的。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |