Problem mit Char ausgabe.
-
Hallo,
folgendes Programm:int main() { union a { char ch; unsigned int ui; }b; b.ch='a'; b.ui=1; printf("%c, %u",b.ch,b.ui); return 0; }
Bei der Ausführung bekomme ich ein "Smiley", 1 raus.
Also, 1
Wo ist da der fehler?Vielen Dank
Gruß
Stefan
-
Eine union ist dazu gedacht, zeitgleich EINEN Wert abzuspeichern.
Der Zugriff auf einen anderen Member als der der zuletzt gesetzt wurde ist undefiniert (in deinem Fall ist das ch).
Was du suchst ist eine struct.
-
Stefan032 schrieb:
Wo ist da der fehler?
In deiner Erwartung.
Bei einer Union teilen sich die Elemente den Speicher.
Du kannst zu einer Zeit nur ein Element benutzen. Und der Standard garantiert auch nur, dass du das auslesen kannst, was du vorher reingeschrieben hast.Vertausch doch mal Zeile 9 und 10
-
Achsoooo.
Alles klar
Vielen Dank
-
Suchst du nach einer
struct
?
-
Nein das war eine Aufgabe in Informatik. Wir sollen rausfinden wie ein union funktioniert. Also war es schon so gedacht.