Bug#243507: g++-3.3: broken fprintf output for floating-point formatted numbers
> Package: g++-3.3
> Version: 1:3.3.3-6
> Severity: normal
> When I use any integer constant number (e.g. '0') as an argument for
> fprintf command which is '%f' formatted, the output is broken - probably
> uninitialized value. When I use floating-point constant (e.g. '0.0'),
> everything works fine.
%f assumes double argument (8 bytes)
Passing integter value pushes only 4 byte to stack.
So yes, printf gets unitialized value.
It's a bug in the code, not in the compiler. Compiler can't do any
type-checking for variable argument functions.
Well, gcc has some logic implemented specially for printf and company,
maybe it should be fixed.