Я видел код ниже в этом сообщении 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");
}
В обоих C & C++ вывод кода является неожиданным,
Выключен !!
Хотя в этом посте дается объяснение, связанное со "знаковым битом", я не могу понять, как это возможно, что мы устанавливаем что-то, и тогда это не отражает так, как есть.
Может кто-нибудь дать более подробное объяснение?
Примечание. Оба тега c и c++ являются обязательными, поскольку их стандарты немного отличаются для описания битовых полей. Смотрите ответы для спецификации C и спецификации C++.