http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48651
--- Comment #2 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2011-04-17 18:28:55 UTC --- hmm, notice the typo! i have set ldnum to 0.0 but it still is printing the value of dnum. What am I doing wrong. $ cat sprint.c #include <stdio.h> int main () { float num = 0.9; double dnum = 0.9; long double ldnum = 25.6; printf("%50.48f\n", num); printf("%50.48lf, %d\n", num, sizeof(num)); printf("%80.78f\n", dnum); printf("%80.78lf, %d\n", dnum, sizeof(dnum)); printf("%80.78f\n", ldnum); printf("%80.78lf, %d\n", ldnum, sizeof(ldnum)); } [jerry@quattro pr48602]$ cat sprint.c #include <stdio.h> int main () { float num = 0.9; double dnum = 0.9; long double ldnum = 25.6; printf("%50.48f\n", num); printf("%50.48lf, %d\n", num, sizeof(num)); printf("%80.78f\n", dnum); printf("%80.78lf, %d\n", dnum, sizeof(dnum)); printf("%80.78f\n", ldnum); printf("%80.78lf, %d\n", ldnum, sizeof(ldnum)); } [jerry@quattro pr48602]$ ./a.out 0.899999976158142089843750000000000000000000000000 0.899999976158142089843750000000000000000000000000, 4 0.900000000000000022204460492503130808472633361816406250000000000000000000000000 0.900000000000000022204460492503130808472633361816406250000000000000000000000000, 8 0.900000000000000022204460492503130808472633361816406250000000000000000000000000 0.900000000000000022204460492503130808472633361816406250000000000000000000000000, 16 The value of ldnum is not surviving.