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


Groups > comp.lang.c > #6281

Re: Union test for endianess

From Shao Miller <sha0.miller@gmail.com>
Newsgroups comp.lang.c
Subject Re: Union test for endianess
Date 2011-06-17 13:33 -0500
Organization A noiseless patient Spider
Message-ID <itg36b$m9c$1@dont-email.me> (permalink)
References <f19541de-213c-4744-b712-92f20a3ad294@d26g2000prn.googlegroups.com> <iteme0$3va$1@dont-email.me> <18896aaa-106d-4a43-95bb-a08e13676be2@x38g2000pri.googlegroups.com> <iteu3o$8ll$1@dont-email.me> <memory-access-20110617145611@ram.dialup.fu-berlin.de>

Show all headers | View raw


On 6/17/2011 7:57 AM, Stefan Ram wrote:
> Shao Miller<sha0.miller@gmail.com>  writes:
>> Which union rules are you worried about, in particular?
>
>    One might worry about not knowing whether or where C actually
>    specifies the value of a certain member. For example, in
>
>        U.i=0x12345678; // writing to int member
>        if ( U.ch[0]==0x78 )   // reading from char member
>
>    or
>
>        int i=0x12345678;    //  sizeof(int) == 4
>        char *ch=(char *)&i;
>
>    , we assume that the value *ch is a »window« into the
>    in-memory representation of i. but does the C standard
>    actually requires an implementation to behave this way
>    somewhere? If so, where?
>

6.2.6.1p4 defines "object representation."  The 'i' member and the union 
itself have an object representation.

6.2.6.1p5 allows for a an lvalue expression ('U.ch[0]') with a character 
type (such as 'char') to read the stored value.

6.5p7 confirms that an lvalue expression with a character type can read 
the stored value.

>> One of the guarantees of the character types is that all objects can
>> have all of their bits manipulated/inspected via access through a
>> character type.
>
>    Yes, it would be nice to know, where one can find this.
>    In the best case, all the steps needed to prove that *ch
>    really has the semantics as intended above.
>

Please see above, plus:

6.2.6p3 states that the representation of 'unsigned char' is "pure binary."

6.2.6.2p1 states that 'unsigned char' is not divided into value bits and 
padding bits.  Since it has values, that leaves only value bits.  That 
means that there is no bit which cannot be accessed.

The treatment of 'signed char' and implementations where 'char' is akin 
to 'signed char' simply has one of the bits being a sign bit[6.2.6.2p6].

Do you have alternative interpretations of these?

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


Thread

Union test for endianess Bhasker Penta <bskdsp@gmail.com> - 2011-06-16 20:16 -0700
  Re: Union test for endianess Ian Collins <ian-news@hotmail.com> - 2011-06-17 15:36 +1200
    Re: Union test for endianess Willem <willem@toad.stack.nl> - 2011-06-17 14:13 +0000
      Re: Union test for endianess Joe Wright <joewwright@comcast.net> - 2011-06-17 14:00 -0400
        Re: Union test for endianess Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-06-19 19:25 +0000
  Re: Union test for endianess China Blue Angels <chine.bleu@yahoo.com> - 2011-06-16 20:54 -0700
    Re: Union test for endianess Willem <willem@toad.stack.nl> - 2011-06-17 14:14 +0000
      Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 10:28 -0400
        Re: Union test for endianess Keith Thompson <kst-u@mib.org> - 2011-06-17 10:54 -0700
      Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-17 10:35 -0500
      Re: Union test for endianess "J. J. Farrell" <jjf@bcs.org.uk> - 2011-06-18 01:50 +0100
  Re: Union test for endianess China Blue Angels <chine.bleu@yahoo.com> - 2011-06-16 21:00 -0700
    Re: Union test for endianess Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-06-17 12:09 +0100
  Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-17 00:50 -0500
    Re: Union test for endianess Bhasker Penta <bskdsp@gmail.com> - 2011-06-16 23:17 -0700
      Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-17 03:01 -0500
        Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-17 13:33 -0500
          Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-18 09:18 -0400
          Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-19 17:22 -0500
          Re: Union test for endianess Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-19 16:24 -0700
        Re: Union test for endianess Bhasker Penta <bskdsp@gmail.com> - 2011-06-18 01:08 -0700
        Re: Union test for endianess Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-19 15:52 -0700
  Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 09:32 -0400
    Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 09:52 -0400
      Re: Union test for endianess Bhasker Penta <bskdsp@gmail.com> - 2011-06-17 07:13 -0700
        Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 10:31 -0400
    Re: Union test for endianess "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2011-06-17 15:57 -0700
      Re: Union test for endianess Keith Thompson <kst-u@mib.org> - 2011-06-17 16:42 -0700
        Re: Union test for endianess James Waldby <not@valid.invalid> - 2011-06-18 02:53 +0000
          Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 23:59 -0400
            Re: Union test for endianess James Waldby <not@valid.invalid> - 2011-06-18 14:45 +0000
              Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-18 11:08 -0400
              Re: Union test for endianess cri@tiac.net (Richard Harter) - 2011-06-18 19:47 +0000
                Re: Union test for endianess James Waldby <not@valid.invalid> - 2011-06-18 23:15 +0000
                Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-18 22:42 -0400
              Re: Union test for endianess Jens <jens.gustedt@gmail.com> - 2011-06-19 07:41 -0700
              Re: Union test for endianess Roberto Waltman <usenet@rwaltman.com> - 2011-06-22 11:25 -0400
                Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-22 11:40 -0400
                Re: Union test for endianess James Waldby <not@valid.invalid> - 2011-06-22 21:42 +0000
      Re: Union test for endianess James Kuyper <jameskuyper@verizon.net> - 2011-06-17 21:18 -0400
  Re: Union test for endianess falk@rahul.net (Edward A. Falk) - 2011-06-17 20:50 +0000
  Re: Union test for endianess "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-06-18 10:42 -0400
    Re: Union test for endianess Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-06-18 22:55 +0100
      Re: Union test for endianess "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-06-19 21:14 -0400
  Re: Union test for endianess Jens <jens.gustedt@gmail.com> - 2011-06-19 07:46 -0700
    Re: Union test for endianess Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-19 16:14 -0700
    Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-19 20:24 -0500
      Re: Union test for endianess Jens <jens.gustedt@gmail.com> - 2011-06-20 00:31 -0700
        Re: Union test for endianess Shao Miller <sha0.miller@gmail.com> - 2011-06-20 04:33 -0500
        Re: Union test for endianess Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-20 12:22 -0700

csiph-web