typeof and bitfields

Andrew Haley aph@redhat.com
Fri Jan 14 20:28:00 GMT 2005


Dave Korn writes:
 > 
 >   While we're on the subject, I've always been curious what on earth the meaning
 > of 
 > 
 > struct foo {
 >    int   bar : 1;
 > };
 > 
 > could possibly mean.  What are the range of values in a 1-bit
 > signed int?  Is that 1 bit the sign bit or the value field?  Can
 > bar hold the values 0 and 1, or 0 and -1, or some other set?  (+1
 > and -1,

That one.

 > maybe, or perhaps the only two values it can hold are +0
 > and -0?)  In a one bit field, the twos-complement operation
 > degenerates into the identity - how can the concept of signed
 > arithmetic retain any coherency in this case?

It's the ring of integers modulo 2.  In that ring,

  -1 == 1 (mod 2)
     ^ is congruent to

I don't think there's anything particularly weird about it from a
number theory point of view.

Andrew.



More information about the Gcc mailing list