Einfaches C Programm. Ich blick hier nicht mehr durch^^

...komplette Frage anzeigen

4 Antworten

die riesigen Zahlen sind Zufallswerte, denn die Variable d muss innerhalb der printf-Anweisung stehen. Bei dir steht &d; hinter der ) Klammer. Aber auch wenn &d vor der )- Klammer stehen würde, entstehen riesige Zahlen. Das ist dann aber die Speicheradressen von d, nicht aber deren Inhalt.

sowohl

printf("%d"),&d; 

als auch

printf("%d",&d); 

sind falsch.

Du willst aber nicht die Adresse der Variablen d sondern deren Inhalt ausgeben. Die Anweisung muss also

printf("%d",d); 

lauten.

Die if else -Konstruktion ist auch kaum lesbar. Für solche Fälle wurde die switch-Anweisung wesentlich übersichtlicher sein.

switch ( c ) {
     case 1 : { printf("Plus\n"); d=a+b; printf("%d",d);  break; }
     case 2 : { printf("Plus\n"); d=a+b; printf("%d",d); break; }
     case 3 : { printf("mal\n"); d=a*b;  printf("%d",d);  break; }
     case 4 : { printf("geteilt\n"); d=a/b; printf("%d",d); break; }
     default : { printf("falsche eingabe\n"); } 
               }

Nur mal ein Beispielfehler:

printf("%d"),&d;

Da ist die Klammer falsch. Richtig wäre

printf("%d",&d);

Kann sein, dass er deswegen irgendwas ausgibt - ja, das tut er, er greift einfach in den Speicher und liest die Daten aus. Daher kommt da irgendeine Zahl heraus.

LockNo4 02.09.2014, 23:04

Hat leider nicht geklappt...

das ding ist wenn ich als beispiel die scanf's mit 3 das nächste mit 4 und das dritte mit 1 fülle bekomme ich da 2686776 als ergebnis raus :-/

0
FataMorgana2010 02.09.2014, 23:08
@LockNo4

Füg doch mal direkt hinter den scanf-Befehl einen printf-Befehlt ein, dann siehst du, ob er wenigstens die Zahlen richtig einliest.

Hast du das in allen vier betroffenen Zeilen geändert?

0
FataMorgana2010 02.09.2014, 23:12
@FataMorgana2010

Und jetzt noch mal der richtige Fehler (man ist das lang her mit der c-Programmierung). Bei printf übergibst du die Variable direkt, es heißt also

printf("%d", d);

Das "&" ist zuviel.

1
LockNo4 02.09.2014, 23:13
@FataMorgana2010

Jap, alle 4. Er liest als 3 eine 2686788, für die 4 eine 2686784 und für die 1 eine 2686780 ein...

0
LockNo4 02.09.2014, 23:15
@FataMorgana2010

Herzlichen dank :-D hätte ich auch selbst drauf kommen können aber irgendwann verrennt man sich darin total und sieht sowas nicht mehr :-D Einen schönen Abend noch und vielen Dank für die hilfe :-)

0
sarahj 16.01.2015, 11:04

auch falsch; siehe oben.

0

Mist, sehr unübersichtlich... sah in der Vorschau besser aus... ich bastel es mal neu in die kommentare...

Es muss printf("%d", &variable) sein, nicht printf("%d"), &variable;

sarahj 16.01.2015, 11:03

Nein, wie oben richtig geschrieben, muss es

printf("%d", variable)

heissen

0

Was möchtest Du wissen?