Funktionen ineinander aufrufen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
mvp_1991
Beiträge: 13
Registriert: Di Apr 19, 2016 9:57 pm

Funktionen ineinander aufrufen

Beitrag von mvp_1991 » Sa Apr 23, 2016 9:05 pm

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>



int f (int a, int b){
    a*=10;
    b*=5;
    printf("a = %d \n",a);
    printf("b = %d \n",b);
    }

int g (int c){
    f(10,5);
    c *= a;
    printf("c = %d \n",c);
    return 0;
 }

int main()
{
    g(5);
    return 0;
}

Hallo, wieso zeigt das Programm mir bei dem Ausdruck c*=a einen Fehler an?
Wieso kann ich nicht einfach mit meiner aus f berechneten a Variable mit dem Wert 100 weiterrechnen?

Dankeschön

Edit by Xin: Codetags hinzugefügt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Funktionen ineinander aufrufen

Beitrag von Xin » Sa Apr 23, 2016 10:55 pm

mvp_1991 hat geschrieben: int g (int c){
f(10,5);
c *= a;
printf("c = %d \n",c);
return 0;
}
[/code]

Hallo, wieso zeigt das Programm mir bei dem Ausdruck c*=a einen Fehler an?
Wieso kann ich nicht einfach mit meiner aus f berechneten a Variable mit dem Wert 100 weiterrechnen?
Dein Programm heißt g und bekommt eine Variable c rein.
Ich sehe hier kein a.
Der Compiler auch nicht. Also meckert er.

Vielleicht liest Du Dir im C-Tutorial mal den Bereich zu Scopes durch, die die Gültigkeit von Variablen erklären.

Um dein Problem zu lösen: Deine Unterprogramm f soll angeblich ein int zurückgeben. Keine Ahnung, mit welchem Compiler Du arbeitest, aber der ist nicht scharf gestellt, wenn er das kommentarlos kompiliert. Da fehlt ein Return. Du könntest innerhalb von f mit return a; den Wert von a zurückgeben. Dann könntest in Funktion g den Aufruf mit int a = f(10,5) die Rückgabe in eine Variable a schreiben, die aber nur in g gültig ist und nichts mit der Variable a aus f zu tun hat.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten