Я бачив наведений нижче код у цій публікації 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 ++ .
struct mystruct { unsigned int enabled:1; };
?
int
я думаю, воно може містити лише значення0
та-1
.