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


Groups > comp.lang.c > #123632

Re: Recasting data as long ints and chars

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Recasting data as long ints and chars
Date 2017-11-30 11:40 +0000
Organization A noiseless patient Spider
Message-ID <87fu8w2dv9.fsf@bsb.me.uk> (permalink)
References (6 earlier) <ovk5ev$ee3$1@dont-email.me> <87efohsxin.fsf@bsb.me.uk> <RrDMy1cnJtEcOsyJAqgdzUr1TUNmG@bongo-ra.co> <87bmjklh7u.fsf@bsb.me.uk> <lnindsy3y6.fsf@kst-u.example.com>

Show all headers | View raw


Keith Thompson <kst-u@mib.org> writes:

> Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
>> Spiros Bousbouras <spibou@gmail.com> writes:
>>> On Wed, 29 Nov 2017 01:07:28 +0000
>>> Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>>>>   unsigned nb = 0;
>>>>   unsigned U_ORDER = 0;
>>>> 
>>>> and loop setting
>>>> 
>>>>   (U_ORDER << CHAR_BIT) | nb++
>>>
>>> If  sizeof(unsigned) == 1    then   U_ORDER << CHAR_BIT
>>> is undefined behaviour.
>>
>> Why?
>
> Because CHAR_BIT (which would have to be at least 16) would be equal to
> the width of the left operand.

Ah, yes, thanks (and to Spiros Bousbouras).

> N1570 6.5.7p3:
<snip>

>> But that's a side issue.

Though this UB it's not an issue in the loop I was imagining (because
the loop won't run when there is only one byte), having to check that
made me spot another error: nb should be initialised 1.  I.e. I was
suggesting replacing the compile-time

  unsigned U_ORDER = 0x00010203;

with

  unsigned nb = 1;
  unsigned U_ORDER = 0;
  while (nb < sizeof U_ORDER)
      U_ORDER = (U_ORDER << CHAR_BIT) | nb++;

Of course padding bits can make this go wrong, but life is short...

-- 
Ben.

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


Thread

Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-19 21:11 +0000
  Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-23 00:50 +0000
    Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-26 15:55 +0000
      Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-26 23:55 +0000
        Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-11-27 06:43 +0000
          Re: Recasting data as long ints and chars "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-11-27 09:26 +0100
            Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-11-27 08:50 +0000
            Re: Recasting data as long ints and chars "James R. Kuyper" <jameskuyper@verizon.net> - 2017-11-27 10:35 -0500
              Re: Recasting data as long ints and chars supercat@casperkitty.com - 2017-11-27 08:00 -0800
              Re: Recasting data as long ints and chars "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-11-27 23:49 +0100
                Re: Recasting data as long ints and chars jameskuyper@verizon.net - 2017-11-27 15:56 -0800
            Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-15 12:45 -0800
          Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-27 15:08 +0000
        Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-27 14:55 +0000
          Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-27 15:51 +0000
            Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-28 17:13 +0000
              Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-29 01:07 +0000
                Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-11-29 18:59 +0000
                Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-30 00:53 +0000
                Re: Recasting data as long ints and chars Keith Thompson <kst-u@mib.org> - 2017-11-29 17:01 -0800
                Re: Recasting data as long ints and chars Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-30 11:40 +0000
                Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-30 19:53 +0000
              Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-11-29 18:37 +0000
                Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-11-30 22:38 +0000
                Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-12-07 05:06 +0000
                Re: Recasting data as long ints and chars supercat@casperkitty.com - 2017-12-07 07:51 -0800
                Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2017-12-08 23:14 +0000
                Re: Recasting data as long ints and chars supercat@casperkitty.com - 2017-12-12 16:19 -0800
                Re: Recasting data as long ints and chars Keith Thompson <kst-u@mib.org> - 2017-12-12 17:10 -0800
                Re: Recasting data as long ints and chars supercat@casperkitty.com - 2017-12-13 09:02 -0800
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-15 12:39 -0800
                Re: Recasting data as long ints and chars Robert Wessel <robertwessel2@yahoo.com> - 2017-12-15 17:39 -0600
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-15 15:52 -0800
                Re: Recasting data as long ints and chars Robert Wessel <robertwessel2@yahoo.com> - 2017-12-16 00:35 -0600
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-17 14:02 -0800
                Re: Recasting data as long ints and chars "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2017-12-17 15:15 -0800
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-17 18:47 -0800
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-17 14:09 -0800
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-17 14:19 -0800
                Re: Recasting data as long ints and chars herrmannsfeldt@gmail.com - 2017-12-17 14:45 -0800
                Re: Recasting data as long ints and chars Spiros Bousbouras <spibou@gmail.com> - 2017-12-13 19:13 +0000
                Re: Recasting data as long ints and chars James Harris <james.harris.1@gmail.com> - 2018-02-10 05:46 +0000

csiph-web