我在 这个 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 + + 规范的答案。