ฉันเห็นรหัสด้านล่างในโพสต์ 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 ++ เปค
int
ฉันคิดว่ามันสามารถเก็บค่า0
และ-1
.