有个讨论帖比较精彩:http://www.chinaunix.net/jh/23/422544.html
实现代码:
#include <stdio.h>
int max(int x,int y)
{
int buf[2]={x,y};
unsigned int z;
z=x-y;
printf("z=x-y=%u\n",z);
z>>=31;
printf("z>>=31=%u\n",z);
//int z1;
//z1 = x - y;
//printf("z1=x-y=%u\n",z);
//z1>>=31;
//printf("z1>>=31=%u\n",z);
return buf[z];
}
void main()
{
int a;
//a=max(4294967295,-4294967296);
a=max(7,5);
printf("%d",a);
scanf("%d",&a);
}
问题:会溢出,
主函数中,a=max(4294967295,-4294967296);时,输出0。