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


Groups > comp.lang.c > #164729

Re: does a double cast to unsigned makes sense in any circumstance?

From Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups comp.lang.c
Subject Re: does a double cast to unsigned makes sense in any circumstance?
Date 2022-01-30 00:01 -0800
Organization None to speak of
Message-ID <87bkztlki5.fsf@nosuchdomain.example.com> (permalink)
References (5 earlier) <86a6fur0rh.fsf@levado.to> <87tue2xbu5.fsf@nosuchdomain.example.com> <864k5n9wdw.fsf@levado.to> <87fsp7ky9m.fsf@nosuchdomain.example.com> <st4u3j$st8$1@gioia.aioe.org>

Show all headers | View raw


Manfred <noname@add.invalid> writes:
> On 1/29/2022 4:37 AM, Keith Thompson wrote:
>> Meredith Montgomery <mmontgomery@levado.to> writes:
>>> Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
>>>> Meredith Montgomery <mmontgomery@levado.to> writes:
>>>>> Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
>>>>>> James Kuyper <jameskuyper@alumni.caltech.edu> writes:
>>>>>> [...]
>>>>>>> "... the value is converted by repeatedly adding ... one more than the
>>>>>>> maximum value that can be represented in the new type until the value is
>>>>>>> in the range of the new type." (6.3.1.3p2).
>>>>>>>
>>>>>>> It's the other direction that's dangerous: conversion of an integer
>>>>>>> value to a signed integer type that is not representable in that type
>>>>>>> has undefined behavior.
>>>>>>
>>>>>> No, converting an out-of-range integer value to a signed integer type
>>>>>> yields an implementation-defined result or raises an
>>>>>> implementation-defined signal.  (C99 added the option of raising a
>>>>>> signal; in my opinion that was a bad idea.)
>>>>>
>>>>> Just curious --- why do you think a signal is a bad idea?
>>>>
>>>> A signal isn't inherently a bad idea, particularly if portable code can
>>>> handle it.  But the fact that the signal is implementation-defined makes
>>>> that impossible.  (And freestanding implementations needn't support
>>>> <signal.h>.)
>>>
>>> What's a freestanding implementation?
>> See section 4 of any edition of the C standard.  I usually use
>> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf, a draft
>> that's close to C11.
>>      The two forms of *conforming implementation* are hosted and
>>      freestanding. A *conforming hosted implementation* shall accept any
>>      strictly conforming program. A *conforming freestanding implementation*
>>      shall accept any strictly conforming program in which the use of the
>>      features specified in the library clause (clause 7) is confined to the
>>      contents of the standard headers <float.h>, <iso646.h>, <limits.h>,
>>      <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>, and
>>      <stdnoreturn.h>. A conforming implementation may have extensions
>>      (including additional library functions), provided they do not alter
>>      the behavior of any strictly conforming program.
>> Basically a hosted implementation is the kind that you're most
>> likely to
>> encounter.  It generates code that runs under an operating system, and
>> it supports the entire standard library.  A freestanding implementation
>> targets an embedded system that might not have an operating system at
>> all.  The only standard library headers that must be supported are the
>> ones that don't declare any functions.  A freestanding implementation
>> might provide some library functions, but it isn't required to.
>
> A freestanding implementation might also target the OS itself of a
> common system (not necessarily embedded), right?

Sure.  Any implementation that meet's the standard's requirements can be
a conforming freestanding implementation -- even one that targets an OS.
You could call an implementation "freestanding" even if it's just
because you haven't implemented all the required parts of the standard
library.

The standard does have more to say about freestanding implementations
(N1570 5.1.2.1):

    In a freestanding environment (in which C program execution 
    may take place without any benefit of an operating system),
    the name and type of the function called at program startup are
    implementation-defined. Any library facilities available to a 
    freestanding program, other than the minimal set required by
    clause 4, are implementation-defined.

    The effect of program termination in a freestanding environment 
    is implementation-defined.

And the ANSI C Rationale:

    By defining conforming implementations in terms of the programs they
    accept, the Standard leaves open the door for a broad class of
    extensions as part of a conforming implementation.  By defining both
    conforming hosted and conforming freestanding implementations, the
    Standard recognizes the use of C to write such programs as operating
    systems and ROM-based applications, as well as more conventional
    hosted applications.  Beyond this two-level scheme, no additional
    subsetting is defined for C, since the Committee felt strongly that
    too many levels dilutes the effectiveness of a standard.

I think the intent is that freestanding implementations are for embedded
systems, likely with no OS, or you're using the implementation to build
the OS, but it's not a strict requirement.

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips
void Void(void) { Void(); } /* The recursive call of the void */

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


Thread

does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-03 14:15 -0300
  Re: does a double cast to unsigned makes sense in any circumstance? Bart <bc@freeuk.com> - 2022-01-03 17:32 +0000
    Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-15 22:09 -0300
  Re: does a double cast to unsigned makes sense in any circumstance? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-03 10:06 -0800
    Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-15 22:12 -0300
      Re: does a double cast to unsigned makes sense in any circumstance? James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-15 23:12 -0500
        Re: does a double cast to unsigned makes sense in any circumstance? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-01-20 19:37 -0800
          Re: does a double cast to unsigned makes sense in any circumstance? "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-01-21 09:35 -0800
            Re: does a double cast to unsigned makes sense in any circumstance? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-01-21 17:19 -0800
  Re: does a double cast to unsigned makes sense in any circumstance? Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-03 19:31 +0100
    Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-15 22:14 -0300
      Re: does a double cast to unsigned makes sense in any circumstance? James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-15 23:24 -0500
        Re: does a double cast to unsigned makes sense in any circumstance? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-16 13:30 -0800
          Re: does a double cast to unsigned makes sense in any circumstance? James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-16 23:25 -0500
          Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-17 09:43 -0300
            Re: does a double cast to unsigned makes sense in any circumstance? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-17 13:59 -0800
              Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-28 22:13 -0300
                Re: does a double cast to unsigned makes sense in any circumstance? James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-28 21:29 -0500
                Re: does a double cast to unsigned makes sense in any circumstance? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-02-03 22:28 -0800
                Re: does a double cast to unsigned makes sense in any circumstance? "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-02-04 10:43 -0800
                Re: does a double cast to unsigned makes sense in any circumstance? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-28 19:37 -0800
                Re: does a double cast to unsigned makes sense in any circumstance? Manfred <noname@add.invalid> - 2022-01-30 03:45 +0100
                Re: does a double cast to unsigned makes sense in any circumstance? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-30 00:01 -0800
                Re: does a double cast to unsigned makes sense in any circumstance? Richard Damon <Richard@Damon-Family.org> - 2022-01-30 12:59 -0500
        Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-17 09:41 -0300
  Re: does a double cast to unsigned makes sense in any circumstance? Richard Damon <Richard@Damon-Family.org> - 2022-01-03 14:37 -0500
    Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-15 22:15 -0300
      Re: does a double cast to unsigned makes sense in any circumstance? Richard Damon <Richard@Damon-Family.org> - 2022-01-15 20:55 -0500
        Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-17 09:44 -0300
    Re: does a double cast to unsigned makes sense in any circumstance? Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-16 05:13 +0100
  Re: does a double cast to unsigned makes sense in any circumstance? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-01-15 18:53 -0800
    Re: does a double cast to unsigned makes sense in any circumstance? Meredith Montgomery <mmontgomery@levado.to> - 2022-01-17 09:46 -0300
    Re: does a double cast to unsigned makes sense in any circumstance? Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-29 16:57 +0100
      Re: does a double cast to unsigned makes sense in any circumstance? Öö Tiib <ootiib@hot.ee> - 2022-01-29 09:54 -0800
        Re: does a double cast to unsigned makes sense in any circumstance? Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-30 13:17 +0100
          Re: does a double cast to unsigned makes sense in any circumstance? Öö Tiib <ootiib@hot.ee> - 2022-01-30 23:53 -0800

csiph-web