I was trying to see the hex representation of floating point numbers and compiled this code with gcc-4.9.2:
double i = 100;
printf("%f %x\n", i, (double)i);
%x format specifier requires an argument of type
unsigned int. You're giving it an argument of type
double. The behavior is undefined, which means that as far as the C standard is concerned anything can happen -- including changing the output for other specifiers in the same format string.
To print the hex representation of a floating-point number, copy it to an array of
unsigned char and print the elements of the array.