/* The bit-field below would have a problem if __INT_MAX__ is too small. */ #if __INT_MAX__ < 2147483647 int main (void) { exit (0); } #else struct S { int a:3; unsigned b:1, c:28; }; struct S x = {1, 1, 1}; main () { x = (struct S) {b:0, a:0, c:({ struct S o = x; o.a == 1 ? 10 : 20;})}; if (x.c != 10) abort (); exit (0); } #endif