Zum Inhalt springen

Verständnisfrage zu einem C Programm


Empfohlene Beiträge

Geschrieben

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]

Geschrieben

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.

Geschrieben
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" ?

Geschrieben
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. ;)

Geschrieben

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.

Geschrieben

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:

Geschrieben
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 Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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