Here's the code:
#include <stdio.h>
union
{
    unsigned u;
    double d;
} a,b;
int main(void)
{
    printf("Enter a, b:");
    scanf("%lf %lf",&a.d,&b.d);
    if(a.d>b.d)
    {
        a.u^=b.u^=a.u^=b.u;
    }
    printf("a=%g, b=%g\n",a.d,b.d);
    return 0;
}
The a.u^=b.u^=a.u^=b.u; statement should have swapped a and b if a>b, but it seems that whatever I enter, the output will always be exactly my input.
 
     
     
     
    