#include // .long 1431655765 // .long 1070945621 int main( void) { double y = 1.0/3.0; // note: 1/3 == 0, integer division printf( "y = %.20g\n", y); struct ii { int i1, i2; }; union { struct ii i12; double d; } u; u.d = y; printf( "i1, i2 = %i, %i\n", u.i12.i1, u.i12.i2); union { long long ll; double d; } ulld; ulld.ll = (1070945621LL << 32) | 1431655765LL; printf( "ulld.d = %.20g\n", ulld.d); } /* output: y = 0.33333333333333331483 i1, i2 = 1431655765, 1070945621 ulld.d = 0.33333333333333331483 */