Ich habe den folgenden Code in diesem Quora-Beitrag gesehen :
#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");
}
In C & C ++ ist die Ausgabe des Codes unerwartet .
Ist behindert !!
Obwohl die Erklärung zum "Vorzeichenbit" in diesem Beitrag enthalten ist, kann ich nicht verstehen, wie es möglich ist, dass wir etwas festlegen und es dann nicht so widerspiegelt, wie es ist.
Kann jemand eine ausführlichere Erklärung geben?
Hinweis : Beide Tagsc & c ++sind erforderlich, da sich ihre Standards zur Beschreibung der Bitfelder geringfügig unterscheiden. Siehe Antworten zur C-Spezifikation und C ++ - Spezifikation .
struct mystruct { unsigned int enabled:1; };
?
int
ich denke, kann es nur die Werte0
und enthalten-1
.