Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #70287

Re: printf format specifier changes

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: printf format specifier changes
Date 2015-09-11 16:23 -0700
Organization None to speak of
Message-ID <ln1te4mtgo.fsf@kst-u.example.com> (permalink)
References (7 earlier) <f3e9e095-260e-42e8-9fef-c9ea06e18e4f@googlegroups.com> <ln37ylor6c.fsf@kst-u.example.com> <893e3f42-e89d-4c9b-bdfe-cb9e577c3c3b@googlegroups.com> <lnvbbhn6e1.fsf@kst-u.example.com> <cd7de70a-3540-427e-a7ad-805133682268@googlegroups.com>

Show all headers | View raw


supercat@casperkitty.com writes:
> On Thursday, September 10, 2015 at 7:31:45 PM UTC-5, Keith Thompson wrote:
[...]
>> C doesn't provide a way to determine the relative efficiencies of the
>> floating-point types.  It might be nice to have something like the
>> int_fastN_t types, but for floating-point.
>
> The easy semantics, were it not for printf issues, would be to have a type
> defined as "the type to which floats promote" [much as "ptrdiff_t" is "the
> type yielded when subtracting pointers], a type defined as "the type to
> which double values promote", and an optional type which, on systems that
> support it, would represent an extended-precision floating-point number.

They're called float_t and double_t, defined in <math.h>.  I believe
they were introduced by C99.

> I would suggest that the most natural meaning for "long double" would have
> been "the type to which double values promote", given that the most widely
> used platforms that supported the 80-bit type, performed math on doubles by
> promoting to that type.

I dislike that idea.  float, double, and long double are three distinct
floating-point types (of which two or more might happen to have the same
representation).  C doesn't tie the definition of any of those types to
operations on another type, and IMHO it shouldn't.

C also lets an implementation specify how floating-point operations are
evaluated; see FLT_EVAL_METHOD in N1570 5.2.4.2.2.

>> If the implementation has an 80-bit long double type, then a library
>> that doesn't support it is non-conforming.
>
> If a system is going to promote double values to 80 bits when performing
> arithmetic on them, but it's necessary that generated code be compatible
> with libraries that were written before the invention of "long double",
[snip]

"long double" was introduced to the language by the 1989 ANSI
C standard.  Neither it nor the two later standards make specific
allowances for compatibility with non-conforming implementations
that don't support long double.

A more realistic scenario is having a compiler that assumes one
representation for long double and a runtime library that assumes a
different representation (this is a problem for MinGW).  That's just
a matter of building an implementation that behaves consistently.

>> I have no idea why Microsoft decided to make double and long double the
>> same size (which is perfectly valid as far as the C standard is
>> concerned).  Are you suggesting that they did it to avoid confusion with
>> printf format strings?  (Incidentally, printing a long double value with
>> "%f" or "%lf" is incorrect even if long double happens to have the same
>> representation as double, though it's likely to "work".)
>
> Of course using anything other than "%lF" for "long double" is Undefined
> Behavior,

I presume that was a typo for "%Lf".  Of course you can also use "%Le"
or "%Lg", but yes.

>           but programmers want stuff to work.

Then they should use the correct format string.

[...]

>> There are already ways to deal with passing arbitrary integer types to
>> printf.  The simplest is to cast to [u]intmax_t and use "%jd" or "%ju".
>> Or you can use the macros defined in <inttypes.h>.  I don't think it's
>> necessary to mess with the way arguments to variadic functions are
>> promoted.
>
> If one has a mountain of existing code which prints 32-bit values using "%ld"
> and wishes to port it to a system where `long` is 64 bits, having an option
> to make all "printf"-related functions map to library routines that expect
> all integer types to be passed as 64-bits would be a lot more convenient
> than having to identify everyplace that uses a "%ld" to print 32-bit values
> and change them to "%d" while making certain not to accidentally change any
> places that are trying to print 64-bit values.

If one has a mountain of incorrect code, some hack to make it "work" by
making printf behave incorrectly might be convenient.  I'd rather fix
the code.  (I'd rather write it correctly in the first place, but of
course that's not always an option.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-06 09:04 -0700
  Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-06 17:50 +0100
    Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-06 11:34 -0700
      Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-06 19:47 +0100
        Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-06 19:53 +0100
          Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-06 11:57 -0700
      Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-06 10:53 +0100
        Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-09-06 04:21 -0700
          Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 10:40 +0100
            Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-09-07 03:07 -0700
              Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 15:09 +0100
            Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-07 12:03 +0100
              Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-09-07 12:46 +0100
                Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 15:24 +0100
              Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 15:16 +0100
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-07 17:09 +0100
                Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 17:47 +0100
                Re: printf format specifier changes Richard Damon <Richard@Damon-Family.org> - 2015-09-07 13:29 -0400
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 12:17 +0100
                Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-08 10:13 -0500
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 17:09 +0100
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-08 10:08 -0700
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 19:11 +0100
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-08 12:24 -0700
                Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-08 14:56 -0500
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 22:18 +0100
                Re: printf format specifier changes Ian Collins <ian-news@hotmail.com> - 2015-09-09 09:29 +1200
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 22:58 +0100
                Re: printf format specifier changes Ian Collins <ian-news@hotmail.com> - 2015-09-09 10:32 +1200
                Re: printf format specifier changes supercat@casperkitty.com - 2015-09-08 15:57 -0700
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-08 15:12 -0700
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-08 23:45 +0100
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-08 16:36 -0700
                Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-08 19:17 -0500
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-09 09:56 +0100
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-09 11:33 -0700
                Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-09-09 20:35 +0100
                Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-08 14:51 -0500
                Re: printf format specifier changes David Brown <david.brown@hesbynett.no> - 2015-09-08 22:41 +0200
              Re: printf format specifier changes Richard Damon <Richard@Damon-Family.org> - 2015-09-07 12:03 -0400
          Re: printf format specifier changes glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-09-10 06:33 +0000
            Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-09-10 02:38 -0700
          Re: printf format specifier changes supercat@casperkitty.com - 2015-09-10 07:01 -0700
            Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-10 12:47 -0700
              Re: printf format specifier changes supercat@casperkitty.com - 2015-09-10 14:08 -0700
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-10 15:17 -0700
                Re: printf format specifier changes supercat@casperkitty.com - 2015-09-10 16:02 -0700
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-10 17:31 -0700
                Re: printf format specifier changes supercat@casperkitty.com - 2015-09-11 15:43 -0700
                Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-09-11 16:23 -0700
                Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-11 23:33 -0500
                Re: printf format specifier changes Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-11 21:44 -0700
                Re: printf format specifier changes supercat@casperkitty.com - 2015-09-12 09:02 -0700
                Re: printf format specifier changes Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-26 15:00 -0700
                Re: printf format specifier changes supercat@casperkitty.com - 2015-09-27 11:21 -0700
                Re: printf format specifier changes Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-29 10:10 -0700
        Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-09-06 13:41 +0100
          Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-09-07 00:23 -0500
          Re: printf format specifier changes "James Harris" <james.harris.1@gmail.com> - 2015-09-07 11:31 +0100
            Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-09-07 03:54 -0700
    Re: printf format specifier changes Richard Heathfield <rjh@cpax.org.uk> - 2015-07-06 19:44 +0100
      Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-06 22:14 +0100
        Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-07-06 22:43 -0500
        Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-06 23:01 -0700
          Re: printf format specifier changes glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-07-07 06:43 +0000
          Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-09 10:52 +0300
            Re: printf format specifier changes Richard Heathfield <rjh@cpax.org.uk> - 2015-07-09 09:26 +0100
              Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-12 12:56 +0300
                Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-07-12 06:12 -0700
        Re: printf format specifier changes Rosario19 <Ros@invalid.invalid> - 2015-07-07 10:22 +0200
          Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-07 10:10 +0100
      Re: printf format specifier changes Philip Lantz <prl@canterey.us> - 2015-07-07 00:54 -0700
    Re: printf format specifier changes Nobody <nobody@nowhere.invalid> - 2015-07-07 15:08 +0100
      Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-07 16:12 +0100
        Re: printf format specifier changes raltbos@xs4all.nl (Richard Bos) - 2015-07-09 10:34 +0000
          Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-09 12:25 +0100
            Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-12 13:02 +0300
              Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-12 11:23 +0100
    Re: printf format specifier changes <william@wilbur.25thandClement.com> - 2015-07-07 11:50 -0700
      Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-07 12:14 -0700
    Re: printf format specifier changes Les Cargill <lcargill99@comcast.com> - 2015-07-07 21:52 -0500
      Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-07 20:42 -0700
        Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-09 11:12 +0300
          Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-07-09 05:03 -0700
            Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-09 13:10 -0500
          Re: printf format specifier changes James Kuyper <jameskuyper@verizon.net> - 2015-07-09 08:58 -0400
          Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-09 08:10 -0700
            Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-12 12:58 +0300
              Re: printf format specifier changes James Kuyper <jameskuyper@verizon.net> - 2015-07-12 12:57 -0400
              Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-12 11:14 -0700
                Re: printf format specifier changes gazelle@shell.xmission.com (Kenny McCormack) - 2015-07-12 18:26 +0000
      Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-08 13:09 +0100
      Re: printf format specifier changes James Kuyper <jameskuyper@verizon.net> - 2015-07-08 08:10 -0400
        Re: printf format specifier changes Les Cargill <lcargill99@comcast.com> - 2015-07-08 08:12 -0500
          Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-08 08:38 -0700
          Re: printf format specifier changes James Kuyper <jameskuyper@verizon.net> - 2015-07-08 12:00 -0400
            Re: printf format specifier changes Les Cargill <lcargill99@comcast.com> - 2015-07-08 17:20 -0500
      Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-09 11:08 +0300
    Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-08 20:30 +0300
      Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-08 18:56 +0100
        Re: printf format specifier changes gordonb.lmwiv@burditt.org (Gordon Burditt) - 2015-07-09 11:09 -0500
          Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-09 14:05 -0500
      Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-08 11:27 -0700
        Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-08 15:07 -0500
  Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-06 23:39 -0500
    Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-07 10:19 +0100
      Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-07 07:57 -0500
        Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-07 14:15 +0100
          Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-07 14:46 +0100
          Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-07 09:37 -0500
        Re: printf format specifier changes Phil Carmody <pc+usenet@asdf.org> - 2015-07-09 11:24 +0300
          Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-09 09:55 -0500
            Re: printf format specifier changes <william@wilbur.25thandClement.com> - 2015-07-09 11:53 -0700
              Re: printf format specifier changes <william@wilbur.25thandClement.com> - 2015-07-09 13:48 -0700
              Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-09 17:01 -0500
    Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-07 10:59 +0100
      Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-07 07:48 -0500
        Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-07 14:30 +0100
          Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-07 10:05 -0500
            Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-07 23:16 +0100
              Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-07 20:29 -0500
              Re: printf format specifier changes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-07-08 00:43 -0700
              Re: printf format specifier changes Robert Wessel <robertwessel2@yahoo.com> - 2015-07-09 02:29 -0500
                Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-09 10:34 +0100
                Re: printf format specifier changes BGB <cr88192@hotmail.com> - 2015-07-09 09:35 -0500
          Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-07 08:37 -0700
            Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-07 08:45 -0700
            Re: printf format specifier changes supercat@casperkitty.com - 2015-09-07 08:29 -0700
          Re: printf format specifier changes <william@wilbur.25thandClement.com> - 2015-07-07 12:12 -0700
  Re: printf format specifier changes pooja deshpande <namitadeshpande25@gmail.com> - 2015-07-09 09:29 -0700
    Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 09:34 -0700
      Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 09:59 -0700
        Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-09 22:33 +0100
          Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-09 15:17 -0700
            Re: printf format specifier changes glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-07-10 00:30 +0000
              Re: printf format specifier changes Reinhardt Behm <rbehm@hushmail.com> - 2015-07-10 09:17 +0800
      Re: printf format specifier changes David Kleinecke <dkleinecke@gmail.com> - 2015-07-09 10:02 -0700
        Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 10:19 -0700
      Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-09 21:50 +0100
        Re: printf format specifier changes Keith Thompson <kst-u@mib.org> - 2015-07-09 15:05 -0700
          Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 15:09 -0700
          Re: printf format specifier changes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-10 00:28 +0100
            Re: printf format specifier changes raltbos@xs4all.nl (Richard Bos) - 2015-07-13 20:39 +0000
        Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 15:07 -0700
          Re: printf format specifier changes Bartc <bc@freeuk.com> - 2015-07-09 23:16 +0100
            Re: printf format specifier changes "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-09 15:25 -0700

csiph-web