Initializing bit fields

Erik Talvola talvola at janus.Berkeley.EDU
Wed Jun 27 09:34:10 AEST 1990


In article <1656 at crabcake> zhu at cs.jhu.edu (Benjamin Zhu) writes:

   In article <7330025 at hpcllca.HP.COM> walter at hpcllca.HP.COM (Walter Murray) writes:
   >Scot Mcintosh asks:
   >
   >> Given:
   >> struct {
   >>    int field1:1;
   >> 	       :1;
   >>    int field2:1;
   >>    int field3:1;
   >> 	} var = {0,0,0};
   >
   >> Does ANSI define which field the middle zero initializes, or is this
   >> implementation dependent?
   >
   >"All unnamed structure or union members are ignored during initialization."
   >ANSI 3.5.7 (page 72, line 38)  Thus the middle zero initializes
   >field2.
   >

	   That is what I thought before. However, after I tried this out
	   with my gcc compiler, it turns out that at least gcc is not doing
	   what I expected. Here is an example.

... example deleted ...

	   Guess what's the printout?

	   1 1 0			/* should be 1 1 1 according to ANSI */


I just tried this on GCC 1.37.1 on a Sun 3/50, and it prints out 1 1 1
as according to ANSI-C - maybe you are using an older buggier version
of GCC?



--
+----------------------------+
! Erik Talvola               | "It's just what we need... a colossal negative 
! talvola at janus.berkeley.edu | space wedgie of great power coming right at us
! ...!ucbvax!janus!talvola   | at warp speed." -- Star Drek



More information about the Comp.lang.c mailing list