[net.lang.c] bit fields in C

parnass@ihuxf.UUCP (08/12/83)

       There  have  been  some	recent	net  submissions  lamenting
       compiler	 objections  to	the declaration	of long	bit fields.
       According to "The C  Programming	 Language"  (page  137)	 by
       Brian W.	Kernighan and Dennis M.	Ritchie:

		  "A field is a	 set  of  adjacent  bits  within  a
		 single	int....	 Fields	behave like small, unsigned
		 integers,  and	 may  participate   in	 arithmetic
		 expressions just like other integers."


		       Robert S. Parnass
		       Bell Laboratories
		       Naperville, IL
		       ihnp4!ihuxf!parnass

mjs@rabbit.UUCP (08/13/83)

Independent of what K&R says, real compilers may or may not adhere.  On
many compilers, the program below prints: "sbit: -1; ubit: 1".  Thus,
many real compilers do not compile C.
/*
** bits.c: determine signedness of signed and unsigned bit fields.
*/
struct	sbit
{
	int	sbit : 1;
};
struct	ubit
{
	unsigned ubit : 1;
};
main()
{
	struct	sbit	sbit;
	struct	ubit	ubit;
	sbit.sbit = 1;
	ubit.ubit = 1;
	printf("sbit: %d; ubit: %d\n", sbit.sbit, ubit.ubit);
	exit(0);
}
-- 
	Marty Shannon
UUCP:	{alice,rabbit,research}!mjs
Phone:	201-582-3199