#include "iostream.h" 
#include "math.h" 
#define bits ( sizeof( int ) * 8 - 1 ) 
static int CheckFlag( int x, int y )  
{  
int s1 = x >> bits;  
int s2 = y >> bits;  
s1=abs(s1); 
s2=abs(s2); 
return ( s1 * 2 + s2 );  
}  
static int SameSign( int Flag, int x, int y ) 
{  
int t[2] = { x, y }; 
long z = x - y; 
int s = z >> (bits+32);  
s=abs(s); 
return t[s]; 
}  
static int DiffSign(int Flag,int x,int y) 比较 
{  
int t[2] = { x, y };  
return t[Flag - 1]; 
} 
static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign};  
static int Max( int x, int y )  
{  
int Flag = CheckFlag( x, y );  
return (*FuncList[Flag])(Flag,x,y);  
} 
void main()  
{ 
int x,y,z; 
cout<<"请输入整型x的值(-32768~32767):"; 
cin>>x; 
cout<<"请输入整型y的值(-32768~32767):"; 
cin>>y; 
z=Max(x,y); 
cout<<"最大的数:"<<z<<endl; 
}  
#define bits ( sizeof( int ) * 8 - 1 ) //移动的位数 
static int SameSign( int Flag, int x, int y ) //函数功能:x,y同号时的比较 
static int DiffSign(int Flag,int x,int y) //函数功能:x,y异号时的比较 
static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign}; //定义函数指针数组 
static int Max( int x, int y ) //函数功能:求最大值 
static int CheckFlag( int x, int y ) //函数功能:检测x,y的符号 
/* 
Flag 的值 
+ +:0 
- +;1 
+ 1:2 
- -:3 
*/