Zum Inhalt springen

Verständnisfrage zu einem C Programm


Sariel

Empfohlene Beiträge

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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,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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...