C - Verwendung von Union und binäre Darstellung?
Hallo Leute,
meine Freundin hat ein Problem mit einer C-Aufgabe. Ich bin leider mit meinen Basics am Ende und wollte daher mal euch um Rat fragen.
Zur Aufgabe: Man soll sich die interne Repräsentation einer double Zahl binär ausgeben. Man soll dazu die double Variabel mit 2 ints überlagern (Union) und diese dann hintereinander binär ausgeben (mit größtem Index zuerst).
Laut Aufgabe und aktuellem Stoff soll die Aufgabe also mit Union gelöst werden.
Hier der Code:
#include <stdio.h>
union zahl { int x[2]; double y; } n;
void toBinary(int zahl){
int rest, erg = 0;
int fak = 1;
while(zahl){
rest = zahl%2;
zahl = zahl/2;
erg = erg + rest*fak;
fak = fak10;
}
printf("%d", erg);
}
int main(void) {
int erg =0;
sscanf("3.5", "%lf", &n.y);
toBinary(n.x[1]);
puts(" ");
printf("%d\n", n.x[1]);
printf("%f\n", n.y)
}
Sie hat sich nun dran gemacht eine andere Lösung zu finden (anscheinend mit bitshift), aber es wurmt sie sehr wieso die obige Lösung nicht funktioniert.
Ich sehe in der Programmierung erstmal keine groben Fehler, aber es kommt das falsche Ergebnis raus, vermutlich weil sich da irgendetwas mit union nicht so verträgt, aber da bin ich nicht so fit drin.
Könnte mir jemand erklären was hier nicht richtig ist? Ohne erstmal einen alternativen Vorschlag zu geben?
Danke und viele Gürße