e4108.c

1bitのintビットフィールド

/* B:e4108: signed int 型のビットフィールド幅は 2 ビット以上としてください */

struct X { int a: 1; /* NG */ } ; void a() { struct X x; x.a = 1; if(x.a == 1) { puts("OK"); /* ←来ない */ } }
解説 1bit幅のsignedのビットフィールドには1は入りません。 unsigned型にするか、2bit以上の幅にして下さい。