ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
251
251
EMPFEHLEN
-
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
-
05.01.09 08:15 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.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).
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.
-
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
-
05.01.09 22:34 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
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.
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
-
Datentypen
Von mdap im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 09.07.10, 14:32 -
java datenTypen frage (concurrentHashMap <int, Set>)
Von Nobody im Forum JavaAntworten: 7Letzter Beitrag: 18.06.09, 16:28 -
VBA Datentypen
Von WiZdooM im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 18.03.09, 09:30 -
XML Datentypen Parsen
Von benomatic im Forum JavaAntworten: 1Letzter Beitrag: 16.01.09, 22:14 -
Datentypen und Formatierung
Von Majak im Forum C/C++Antworten: 2Letzter Beitrag: 23.04.08, 23:42





Zitieren

Login






