Bei einem Bitfeld bedeutet "int" NICHT automatisch "signed".
Ob bei einem Bitfeld ein "int" "signed" oder "unsigned" ist, ist "implementation-defined", wird also vom Compiler festgelegt. Und offenbar ist es bei dem von dir verwendeten Compiler "unsigned", denn sonst würde er ja auch bei "int dat3 : 1;" eine Warnung bringen.
Lesezeichen