[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]
Re: [XaraXtreme-dev] Doubles and Strings
- From: Martin Wuerthner <lists@xxxxxxxxxxxxxxx>
- Date: Fri, 04 Aug 2006 13:10:45 +0200
- Subject: Re: [XaraXtreme-dev] Doubles and Strings
In message <44D32131.6030509@xxxxxxxxxxx>
Alex Bligh <alex@xxxxxxxxxxx> wrote:
> The correct way to pass a double as a parameter to sprintf, sscanf etc.
> is using "%lf" not "%f" (which means float). This is the reason many
> things (including all EPS import) do not currently work on any platform
> where float != double.
Just for the sake of correctness: You mentioned both sprintf and
sscanf above, which is wrong. What you wrote applies to the scanf
family of routines only (i.e., just to input, not to output).
When using sprintf et al., "%f" means double and "%lf" is undefined.
The reason is some arcane bit of C semantics that causes the supplied
value argument to be promoted to double anyway, so it does not make
any difference whether you pass a float or a double. For obvious
reasons, argument promotion does not apply to pointers, so the scanf
family of routines has to distinguish between float and double. A good
compiler checks the format string and the supplied pointer types and
issues a warning if they do not match. I was under the impression that
GCC does that.