В этом сообщении на 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 ++ .
int
я думаю, оно может содержать только значения0
и-1
.