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


Groups > comp.lang.c > #390077

Re: Representation of _Bool

From Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups comp.lang.c
Subject Re: Representation of _Bool
Date 2025-01-18 20:37 -0800
Organization A noiseless patient Spider
Message-ID <86bjw34dx6.fsf@linuxsc.com> (permalink)
References <87tums515a.fsf@nosuchdomain.example.com> <42fcea7270de500367eceea7ad5530fd@www.novabbs.com> <864j1x5lp1.fsf@linuxsc.com> <8478e1844449ec0a5c2b2fc6fc7453a2@www.novabbs.com>

Show all headers | View raw


learningcpp1@gmail.com (m137) writes:

> On Fri, 17 Jan 2025 18:39:38 +0000, Tim Rentsch wrote:
[...]

> Hi Tim,
>
> Sorry for the confusion, I am new to platform and hadn't realised
> that I need to quote Keith's post in my reply.

No worries.  Glad you are up to speed now.

>> Let's assume 8-bit chars, and also that the width of _Bool is 1
>> (which is optional before C23 and required in C23).  Here is what
>> can be said about the 256 states of a _Bool object.
>>
>> 1.  All zero bits must be a legal value for 0.
>>
>> 2.  There must be at least one combination of bits that is a legal
>> value for 1 (and since it must be distinct from the all-zero
>> value for 0, must have at least one bit set to 1).
>>
>> 3.  The remaining 254 possible combinations of bit settings can be
>> any mixture of legal values and trap representations, which are also
>> known as non-value representations starting in C23.
>>
>> 4.  Considering the set of legal value bit settings, there must be at
>> least one bit position that is 0 in all cases where the value is
>> 0, and is 1 in all cases where the value is 1.
>>
>> 5.  Accessing any representation corresponding to a legal value has
>> well-defined behavior, and yields 0 or 1 depending on the setting of
>> the bit (or bits) mentioned in #4.
>>
>> 6.  Accessing any trap/non-value representation is undefined behavior
>> and might do anything at all.  It might appear to work.  It might
>> work in some cases but not others.  It might yield a value that is
>> neither 0 or 1.  It might abort the program.  It might cause the
>> computer the program is running on to run a different operating
>> system (of course this outcome isn't very likely, but as far as the
>> C standard is concerned it cannot be ruled out).
>>
>> Does this answer all your questions?
>
> Yes, thank you for taking the time to reply, I really appreciate it.
> Just to clarify, since padding bits do not count towards the value being
> represented, in point (2) above, it would have to be the value bit
> specifically that is set to 1;  and similarly in point (4), the bit
> position that is being referred to is the value bit.  Is this correct?

Yes, I think that's right, but we can't always tell which bit is the
value bit just by looking at the set of legal values.  Consider an
implementation where _Bool 0 is represented by all zeros and _Bool 1
is represented by all ones, and every combination that includes both
zeros and ones (which is everything else) is a trap representation.
The width of _Bool must be 1, but which bit is the value bit?  We
can't tell.  Fortunately the C standard says how different types are
encoded is implementation defined (if not defined explicitly), so we
can consult the documentation to see which bit of _Bool is the value
bit.

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


Thread

Re: Representation of _Bool learningcpp1@gmail.com (m137) - 2025-01-17 02:47 +0000
  Re: Representation of _Bool Kaz Kylheku <643-408-1753@kylheku.com> - 2025-01-17 04:40 +0000
    Re: Representation of _Bool David Brown <david.brown@hesbynett.no> - 2025-01-17 10:18 +0100
    Eternal September server retention Was: Representation of _Bool Michael S <already5chosen@yahoo.com> - 2025-01-17 12:06 +0200
    Re: Representation of _Bool James Kuyper <jameskuyper@alumni.caltech.edu> - 2025-01-17 14:10 -0500
    Re: Representation of _Bool learningcpp1@gmail.com (m137) - 2025-01-19 02:08 +0000
      Re: Representation of _Bool Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-01-18 18:28 -0800
  Re: Representation of _Bool Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-01-17 10:39 -0800
    Re: Representation of _Bool learningcpp1@gmail.com (m137) - 2025-01-19 02:11 +0000
      Re: Representation of _Bool Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-01-18 20:37 -0800
  Re: Representation of _Bool Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-01-17 13:34 -0800
    Re: Representation of _Bool Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-01-18 12:17 -0800
    Re: Representation of _Bool learningcpp1@gmail.com (m137) - 2025-01-19 02:30 +0000
      Re: Representation of _Bool gazelle@shell.xmission.com (Kenny McCormack) - 2025-01-19 09:31 +0000
        Re: Representation of _Bool learningcpp1@gmail.com (m137) - 2025-01-21 00:16 +0000

csiph-web