komische Struktur



  • weiß nicht ob ich hier richtig bin,
    weil ich mir nich sicher bin ob es Strukturen schon bei C gab oder erst bei C++
    aber ich glaub die gabs

    jedenfalls hab ich mir den Sourcecode von jemand angeguckt
    und dortwar folgende Struktur:

    struct a
    {
      unsigned int b:4;
    };
    

    was soll denn das :4 bedeuten?
    hat das int den Wert 4?



  • Du bist hier richtig.

    Das ist ein Bitfield.

    http://publications.gbdirect.co.uk/c_book/chapter6/bitfields.html



  • achso, dannergibt das endlich sinn

    aber wie arbeite ich mit so einem Bitfeld,kann ich den Wert auch irgendwie in einen ganzen int konvertieren
    und wie weiße ich einen Wert zu?

    warum dann eigentlich int, was wenn ich zb Short nehme?



  • mit dem bitfeld kannst du genauso umgehen wie mit einem normalen int. nur daß es halt einen kleineren wertebereich hat. unsigned int b:4 hat also einen wertebereich von 0 bis 15.

    es ist aber nicht garantiert, daß der compiler bitfields unterstützt. sollte er keine bitfields kennen, dann verhält sich die obige deklaration genauso wie unsigned int b.



  • Konfusius schrieb:

    es ist aber nicht garantiert, daß der compiler bitfields unterstützt. sollte er keine bitfields kennen, dann verhält sich die obige deklaration genauso wie unsigned int b.

    Hmmm, wo steht denn das? Hab gerade gesucht (Kapitel 6.7.2.1 Structure and union specifiers) aber nichts diesbezüglich gefunden (oder überlesen). Würde mich schon interessieren, obwohl mich das nicht dazu bringen wird bitfields einzusetzen :p


Anmelden zum Antworten