I have the following program
void swap(float * x, float * y)
{
  float aux
  aux = *x;
  *x = *y;
  *y = aux;
}
int main(void)
{
  double a = 3.5, b = 5.6;
  swap(&a, &b);
  printf("%g %g\n", a, b);
  return 0;
}
The program compiles, it obviously throws some warnings, but it runs, and the values of a, b don't get swapped. I don't understand what is happening, I would've thought either this wouldn't have compiled, or it would work, but this is pretty different.
What is happening?
 
     
     
     
    