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


Groups > comp.lang.c > #397296

Re: Why is this happening?

From Michael S <already5chosen@yahoo.com>
Newsgroups comp.lang.c
Subject Re: Why is this happening?
Date 2026-03-30 10:57 +0300
Organization A noiseless patient Spider
Message-ID <20260330105736.00005388@yahoo.com> (permalink)
References (5 earlier) <CfSxR.24256$eG1.15763@fx33.iad> <20260329115057.00003a47@yahoo.com> <87qzp2uzjc.fsf@example.invalid> <20260330020523.0000330f@yahoo.com> <87ecl2uspp.fsf@example.invalid>

Show all headers | View raw


On Sun, 29 Mar 2026 16:22:10 -0700
Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:

> Michael S <already5chosen@yahoo.com> writes:
> > On Sun, 29 Mar 2026 13:54:47 -0700
> > Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:  
> >> Michael S <already5chosen@yahoo.com> writes:  
> >> > On Sat, 28 Mar 2026 15:14:42 GMT
> >> > scott@slp53.sl.home (Scott Lurndal) wrote:
> >> >    
> >> >> Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:    
> >> >> >Lawrence Dג€™Oliveiro <ldo@nz.invalid> writes:      
> >> >> >> On Fri, 27 Mar 2026 10:15:23 +0100, Josef M_¶llers wrote:
> >> >> >>      
> >> >> >>>      diffns += 1000000000UL;      
> >> >> >>
> >> >> >> Can you write
> >> >> >>
> >> >> >>       diffns += 1_000_000_000UL;
> >> >> >>
> >> >> >> yet?      
> >> >> >
> >> >> >Not in C.  C23 introduces the apostrophe as a digit separator,
> >> >> >copied from C++:
> >> >> >
> >> >> >      diffns += 1'000'000'000UL;      
> >> >> 
> >> >> Or diffns += 1000ul * 1000ul * 1000ul;
> >> >> 
> >> >> or diffns += 1 * NS_PER_SEC;
> >> >> 
> >> >> with
> >> >> #define NS_PER_SEC ((1000ul * 1000ul * 1000ul))    
> >> >
> >> > Why not (int)1e9 ?    
> >> [...]
> >> 
> >> Because int is not guaranteed to be wider than 16 bits (though if
> >> you're already relying on Windows or POSIX, you can assume it's at
> >> least 32 bits).  The original expression was of type unsigned long,
> >> so (unsigned long)1e9 would be more nearly correct.
> >> 
> >> And because it's a floating-point to integer conversion in a
> >> context that doesn't need floating-point.  I'm not sure whether
> >> (unsigned long)1e9 is actually guaranteed to yield 1000000000
> >> rather than 999999999.  Maybe it is, but I don't want to waste
> >> brain cells proving it.  
> >
> > IEEE binary64 has precise representations for all powers of 10 from
> > 1e0 to 1e22. I.e it covers all powers of 10 that fit within 64-bit
> > unsigned integer with 3 values to spare.  
> 
> Sure, but the C standard doesn't guarantee IEEE-compatible
> floating-point.
> 

I am not in the racket of uber-portable. Don't want to be accused of
trespassing into pasture of James K.

> I'd be very surprised if any C implementation had (unsigned long)1e9
> unequal to 1000000000.  If I ran across one, I'd seriously consider
> submitting a bug report.  I'd have to study the C standard's
> floating-point requirements to be sure (I haven't done that yet).
> 

I know one environment where bug of that sort could happen, but not for
1e9. It could happen for 1e19, which is a border-line case (it fits in
uint64_t, but does not fit in int64_t).
However environment in question is not C. C compiler from the same
vendor (MS, if  you wonder) handles (uint64_t)1e19 just fine.

> My point is that writing (unsigned long)1e9 rather than 1000000000 or
> (1000ul * 1000ul * 1000ul) introduces complications I'd rather avoid.
> It *might* be perfectly safe, but I'm uncomfortable relying on it.
> If nothing else, if the program misbehaves, it's one less thing to
> worry about while tracking down the bug.
> 

IMHO, improvement that 1e9 brings in readability and in elimination of
possibilities of mis-typing is worth all extremely unlikely troubles
that you mentioned above. YMMV.






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


Thread

Why is this happening? DFS <nospam@dfs.com> - 2026-03-27 00:12 -0400
  Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-27 05:46 +0100
    Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-27 06:01 +0100
      Re: Why is this happening? DFS <nospam@dfs.com> - 2026-03-27 02:31 -0400
    Re: Why is this happening? Josef Möllers <josef@invalid.invalid> - 2026-03-27 10:15 +0100
      Re: Why is this happening? scott@slp53.sl.home (Scott Lurndal) - 2026-03-27 16:02 +0000
        Re: Why is this happening? Josef Möllers <josef@invalid.invalid> - 2026-03-28 21:58 +0100
          Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-29 14:30 +0200
            Re: Why is this happening? scott@slp53.sl.home (Scott Lurndal) - 2026-03-29 18:56 +0000
              Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-30 02:00 +0200
            Re: Why is this happening? Mike Terry <news.dead.person.stones@darjeeling.plus.com> - 2026-03-30 00:41 +0100
              Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-30 09:25 +0200
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-30 11:23 +0300
                Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-30 11:16 +0200
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-30 13:06 +0300
      Re: Why is this happening? Lawrence D’Oliveiro <ldo@nz.invalid> - 2026-03-28 01:46 +0000
        Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-27 20:41 -0700
          Re: Why is this happening? Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2026-03-28 05:17 +0100
            Re: Why is this happening? David Brown <david.brown@hesbynett.no> - 2026-03-28 10:09 +0100
              Re: Why is this happening? Bart <bc@freeuk.com> - 2026-03-28 11:33 +0000
                Re: Why is this happening? David Brown <david.brown@hesbynett.no> - 2026-03-28 16:35 +0100
                Re: Why is this happening? Richard Harnden <richard.nospam@gmail.invalid> - 2026-03-28 16:56 +0000
                Re: Why is this happening? Richard Harnden <richard.nospam@gmail.invalid> - 2026-03-28 16:58 +0000
                Re: Why is this happening? James Kuyper <jameskuyper@alumni.caltech.edu> - 2026-03-28 19:24 -0400
                Re: Why is this happening? David Brown <david.brown@hesbynett.no> - 2026-03-29 11:33 +0200
                Re: Why is this happening? Richard Harnden <richard.nospam@gmail.invalid> - 2026-03-29 16:30 +0100
                Re: Why is this happening? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-03-29 10:37 -0700
                Re: Why is this happening? David Brown <david.brown@hesbynett.no> - 2026-03-31 16:20 +0200
                Re: Why is this happening? Richard Harnden <richard.nospam@gmail.invalid> - 2026-03-31 17:19 +0100
                Re: Why is this happening? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-03-29 13:19 -0700
                Re: Why is this happening? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-03-29 13:26 -0700
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-29 14:14 -0700
                Re: Why is this happening? James Kuyper <jameskuyper@alumni.caltech.edu> - 2026-03-29 20:47 -0400
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-29 13:57 -0700
                Re: Why is this happening? David Brown <david.brown@hesbynett.no> - 2026-03-31 16:26 +0200
          Re: Why is this happening? scott@slp53.sl.home (Scott Lurndal) - 2026-03-28 15:14 +0000
            Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-28 10:18 -0700
              Re: Why is this happening? scott@slp53.sl.home (Scott Lurndal) - 2026-03-29 18:50 +0000
            Re: Why is this happening? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-03-28 19:12 -0700
              Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-28 22:31 -0700
                Re: Why is this happening? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-04-06 12:11 -0700
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-04-06 14:20 -0700
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-04-07 02:05 +0300
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-04-06 17:42 -0700
                Re: Why is this happening? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-04-27 20:36 -0700
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-04-27 20:58 -0700
              Re: Why is this happening? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-03-29 14:43 -0700
            Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-29 11:50 +0300
              Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-29 13:54 -0700
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-30 02:05 +0300
                Re: Why is this happening? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-29 16:22 -0700
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-30 10:57 +0300
                Re: Why is this happening? James Kuyper <jameskuyper@alumni.caltech.edu> - 2026-03-30 20:37 -0400
                Re: Why is this happening? Michael S <already5chosen@yahoo.com> - 2026-03-31 11:48 +0300
                Re: Why is this happening? James Kuyper <jameskuyper@alumni.caltech.edu> - 2026-03-31 10:51 -0400
                Re: Why is this happening? candycanearter07 <candycanearter07@candycanearter07.nomail.afraid> - 2026-03-31 19:00 +0000
        Re: Why is this happening? Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> - 2026-04-03 02:41 +0100

csiph-web