Ich habe Probleme mit den Bitfeldern!



  • Hallo,

    ich habe nie etwas mit den Bitfeldern programmiert!
    Ich habe auch gerade ein Testprogramm getestet, aber ich weiss leider nicht,
    wie das Programm zu dieser Ergebnisse kommt!!

    Hier ist das Ergebnis:

    Bitfeld = 4205567
    Bit1=0, Bit2=1, Rest=63
    Bit1=1, Bit2=1, Rest=2

    Hier ist das Testprogramm:

    #include <stdio.h>
    
    struct byte {
       unsigned bit_1 : 1;
       unsigned bit_2 : 1;
       unsigned rest : 6;
    };
    
    main()   /* Bitfelder */
    {
       struct byte b;
    
       b.bit_2 = b.bit_1 =1;
       b.rest = 63;
       printf("Bitfeld = %d\n", b);
    
       b.bit_1--;
       printf("Bit1=%d, Bit2=%d, Rest=%d\n",b.bit_1, b.bit_2, b.rest);
       if(b.bit_1 && b.bit_2)
          b.bit_1++;
       else
          b.bit_1--;
       b.rest&=(b.bit_1+b.bit_2);
       printf("Bit1=%d, Bit2=%d, Rest=%d\n",b.bit_1, b.bit_2, b.rest);
    }
    

    Code-Tags machen das Leben leichter 😉

    [ Dieser Beitrag wurde am 21.10.2002 um 19:51 Uhr von HumeSikkins editiert. ]



  • printf("sizeof(byte)= %i\n", sizeof(byte));



  • irgendwie das falsche forum hier. richtig wäre K&R C...



  • richtig wäre K&R C

    Ham wir nicht.
    ANSI-C wird's aber auch tun 🙂



  • Wenn du bit_1 zweimal dekrementierst, bekommst du einen Unterlauf und als Wert wieder 1.


Anmelden zum Antworten