Veröffentlicht 20. November 200321 j Moin, ihr werdet es vermutlich als einfach sehen, aber ich habe eine kleine Frage zu diesem C Programm: #include <stdio.h> void main(void) { int a,b; a=4; b=5; printf ("a=%i, b=%i\n", a,; --a; ++b; printf ("a=%i, b=%i\n", a,; printf ("a=%i, b=%i\n", ++a); printf ("a=%i, b=%i\n", a-- +b,; getchar (); } [/code] Wenn ich diese Eingabe Compiliert habe und das Programm dann starte, bekomme ich folgende Ausgabe: a=4, b=5 a=3, b=6 a=4, b=6 a=10, b=6 Die ersten drei Zeilen der Ausgabe kann ich nachvollziehen. Nur bei der letzten komme ich etwas ins stolpern. Kann mir jemand erklären wie der wert 10 bei a zustande kommt? Oder besser wie wird mit a-- gerechnet? Ich habe gelernt das dann a-1 gerechnet wird genauso wie --a gleich a-1 ist. Wenn ich es so rechne komme ich dann aber nur auf neun statt zehn? Es Grüsst, Cr@sh [der sich so langsam mit C Programmierung anfreundet]
20. November 200321 j printf ("a=%i, b=%i\n", ++a); Die Ausgabe von b ist eigentlich nicht definiert, weil der Parameter fehlt... welchen Compiler benutzt Du, daß da 6 ausgegeben wird? printf ("a=%i, b=%i\n", a-- +b,; Der Parameter a wird erst der Funktion übergeben, bevor er runtergezählt wird. Und da es vorher 4 war, wird 4+6=10 ausgegeben und nach der Ausgabe ist a=3. Bei --a wird a auf jeden Fall vor dem Aufruf der Funktion a runtergezählt und dann erst als Parameter weitergegeben und das Ergebnis ist 9.
20. November 200321 j Original geschrieben von Crush Die Ausgabe von b ist eigentlich nicht definiert, weil der Parameter fehlt... welchen Compiler benutzt Du, daß da 6 ausgegeben wird? Hi Crush, Ich benutze den Bloodshed Dev-C++. Noch eine kleine Zwischenfrage: Wofür steht die Anweisung "case" ?
20. November 200321 j Original geschrieben von FinalFantasy Wo steht da was von Case?? Dort nirgens, - ich wollte es wissen, da ich ein Programm habe, wo es vorkommt. Und wollte deswegen keinen Extra Thread aufmachen. Deswegen habe ich gesagt Zwischenfrage.
20. November 200321 j Achso, naja ich nehme dann mal an, dass das eine switch(irgendwas) { case 1: case 2:...} ist. Dass ist eine Mehrfachverzweigung. Wenn die variable irgendwas den wert 1 hat, wird der code nach case 1 ausgeführt, usw.
20. November 200321 j Das Programm sieht so aus: #include <stdio.h> void main(void) { char wahl; printf ("Weiter ('J'/'N')"); fflush (stdin); scanf ("%c",&wahl); fflush (stdin); switch (wahl) { case 'J' case 'j' printf ("Weiter!\n"); break case 'N' case 'n' printf ("Ende!\n"); break default; printf ("Nur 'J' oder 'N' erlaubte Eingabe!\n"); } getchar (); } Jetzt sagt mir mein Compiler, das Ein Fehler enthalten ist. parse error before 'case' :confused:
20. November 200321 j nach dem case 'X': fehlt jedes mal der Doppelpunkt, das würde ich sagen ist der Fehler. Switch-Case sollte eigentlich in jedem C-Buch gut erklärt sein.
20. November 200321 j Original geschrieben von FinalFantasy nach dem case 'X': fehlt jedes mal der Doppelpunkt, das würde ich sagen ist der Fehler. Anscheinend nicht. Jetzt sieht der Abschnitt so aus: { case 'J': case 'j': printf ("Weiter!\n"); break [COLOR=red]case 'N':[/COLOR] case 'n': printf ("Ende!\n"); break default; printf ("Nur 'J' oder 'N' erlaubte Eingabe!\n"); } In der rot markierten Zeile soll der Fehler sein. Kann das eventuell am Compiler liegen?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.