Test case: struct s { unsigned long long a:2; unsigned long long b:40; unsigned long long c:22; }; int main() { struct s t = {1, 2, 3}; printf("0x%llx\n",(t.b-8)); } The output of gcc42 is 0xfffffffffa (which is yield to be 40bits) Why not 0xfffffffffffffffa (It should be 64bits)
*** This bug has been marked as a duplicate of 41793 ***