Seite 1 von 1

Funktionen ineinander aufrufen

Verfasst: Sa Apr 23, 2016 9:05 pm
von mvp_1991

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

Re: Funktionen ineinander aufrufen

Verfasst: Sa Apr 23, 2016 10:55 pm
von Xin
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.