二者相减,使最高位与1相与,来进行验证。
demo:
#include <stdio.h>
#include <stdlib.h>
#define MAX(a,b) ((((int)a - (int)b) & (0x1<<31)) >> 31)
int main(int argc,char **argv)
{
int a=-3;
int b=-2;
printf("a is %x,b is %x,a-b is %x,%d\n",a,b,a-b,a-b);
printf("a - b is %x\n",MAX(a,b));
if(MAX(a,b))
printf("Max is %d\n",b);
else
printf("Max is %d\n",a);
return 0;
}