tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
251
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cyraid Cyraid ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    55
    Hallo

    Ich bin eher ein Neuling in Sachen C/C++ und habe ein paar grundlegende Fragen zu Datentypen.

    In einem Buch habe ich folgende Deklarationen entdeckt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
      unsigned msb;
      
      struct {
        unsigned char ip[4];
      }  ipv4[] = { { { 23, 126, 166, 16 } },
                         { { 23, 126, 166, 16 } },
                         { { 23, 126, 166, 16 } } };

    Nun kenne ich mich mit Datentypen bereits ein wenig aus, jedoch sind mir diese zwei Deklarationen noch nie untergekommen.

    Warum hat die Variable msb nur den Typ 'unsigned'?
    Normalerweise folgt diesem Schlüsselwort doch noch ein konkreter Typ wie 'unsigned int', wodurch gekennzeichnet wird, dass der Typ 'int' zeichenlos aufgefasst wird.

    Auch kenne ich das Schlüsselwort struct, um Datentypen zusammenzufassen, jedoch ist mir die obige Deklaration sehr schleierhaft. Was geschieht hier?


    Danke im voraus!

    Grüße, Cyraid
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Cyraid Beitrag anzeigen
    In einem Buch habe ich folgende Deklarationen entdeckt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
      unsigned msb;
      
      struct {
        unsigned char ip[4];
      }  ipv4[] = { { { 23, 126, 166, 16 } },
                         { { 23, 126, 166, 16 } },
                         { { 23, 126, 166, 16 } } };

    Nun kenne ich mich mit Datentypen bereits ein wenig aus, jedoch sind mir diese zwei Deklarationen noch nie untergekommen.

    Warum hat die Variable msb nur den Typ 'unsigned'?
    Es ist eine abkürzende Schreibweise und hat die gleiche Bedeutung wie "unsigned int". Der Typ "int" ist eine abkürzende Schreibweise für "signed int". Bei dem Typ char ist das anders, da gibt es 3 verschiedene Typen (char, signed char, unsigned char).
    Zitat Zitat von Cyraid Beitrag anzeigen
    Auch kenne ich das Schlüsselwort struct, um Datentypen zusammenzufassen, jedoch ist mir die obige Deklaration sehr schleierhaft. Was geschieht hier?
    Das obige ist nicht nur eine Deklaration (eines Datentyps) sondern auch eine Definition einer Variablen die auch gleich noch initialisiert wird. Konkret wird dort ein Array von (anonymen) structs definiert und mit 3 Elementen bestehend aus jeweils 4 unsigned char Werten initialisiert.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Cyraid Cyraid ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    55
    Danke für die schnelle und kompetente Antwort.

    Zwei Fragen habe ich dazu noch:

    signed/unsigned markiert eine Variable, sie als vorzeichenlos aufzufassen oder nicht. Wo liegt der Unterschied zwischen char, unsigned char und signed char? Wie ist char selbst aufzufassen? Da du meintest, dass es da keine abkürzende Schreibweise ist.

    Die andere Frage ist, was macht es für einen Sinn ein anonymes struct anzulegen, welches nur einen Datentyp, hier unsigned char, beinhaltet?
    Wäre es nicht eleganter gewesen ipv4 ohne struct zu initialisieren?
    Oder gibt es da bestimmte Vorteile, die ich nicht sehe?


    Danke und schöne Grüße,
    Cyraid
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Cyraid Beitrag anzeigen
    signed/unsigned markiert eine Variable, sie als vorzeichenlos aufzufassen oder nicht. Wo liegt der Unterschied zwischen char, unsigned char und signed char? Wie ist char selbst aufzufassen? Da du meintest, dass es da keine abkürzende Schreibweise ist.
    Da früher vor Verabschiedung des C-Standard bei den Compilerherstellern keine Einigkeit herrschte ob ein char vorzeichenbehaftet ist oder nicht, wurde dies auch so in den Standard aufgenommen. D.h. ein char ist vorzeichenbehaftet, oder aber auch nicht - das ist prinzipiell abhängig von der verwendeten Plattform. Ein unsigned char dagegen ist natürlich nie vorzeichenbehaftet, ein signed char immer.
    Zitat Zitat von Cyraid Beitrag anzeigen
    Die andere Frage ist, was macht es für einen Sinn ein anonymes struct anzulegen, welches nur einen Datentyp, hier unsigned char, beinhaltet?

    Wäre es nicht eleganter gewesen ipv4 ohne struct zu initialisieren?
    Ja, eigentlich schon.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Datentypen
    Von mdap im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 09.07.10, 14:32
  2. Antworten: 7
    Letzter Beitrag: 18.06.09, 16:28
  3. VBA Datentypen
    Von WiZdooM im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 18.03.09, 09:30
  4. XML Datentypen Parsen
    Von benomatic im Forum Java
    Antworten: 1
    Letzter Beitrag: 16.01.09, 22:14
  5. Datentypen und Formatierung
    Von Majak im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 23.04.08, 23:42