Widziałem poniższy kod w tym poście Quora :
#include <stdio.h>
struct mystruct { int enabled:1; };
int main()
{
struct mystruct s;
s.enabled = 1;
if(s.enabled == 1)
printf("Is enabled\n"); // --> we think this to be printed
else
printf("Is disabled !!\n");
}
Zarówno w C, jak i C ++ wynik kodu jest nieoczekiwany ,
Jest niepełnosprawny !!
Chociaż wyjaśnienie związane z "bitem znaku" jest podane w tym poście, nie jestem w stanie zrozumieć, jak to możliwe, że coś ustawiliśmy, a potem nie odzwierciedla tego, czym jest.
Czy ktoś może podać bardziej rozbudowane wyjaśnienie?
Uwaga : oba tagido & c ++są wymagane, ponieważ ich standardy nieco się różnią przy opisywaniu pól bitowych. Zobacz odpowiedzi dotyczące specyfikacji C i specyfikacji C ++ .
int
myślę, może zawierać tylko wartości0
i-1
.