Wozu Typ bei Funktion?



  • Hi!
    Hab heute mit C++ angefangen und frage mich, wofür bei einer Funktion der Typ angegeben werden muss. Ergibt für mich keinen Sinn, deswegen wollte ich mal hier fragen.

    bleier116



  • bleier116 schrieb:

    Hi!
    Hab heute mit C++ angefangen und frage mich, wofür bei einer Funktion der Typ angegeben werden muss. Ergibt für mich keinen Sinn, deswegen wollte ich mal hier fragen.

    bleier116

    Ich verstehe nicht genau was du meinst. Falls du den Rueckgabetyp meinst:

    Den musst du angeben, damit der Compiler weiss, was die Funktion fuer zurueck-
    geben kann.

    z. B.

    double sum(double a, double b) {
        return a + b;
    }
    

    Wenn du nun sowas machst:

    double result = sum(1.0, 4.5);
    

    geht das fuer den Compiler klar. Er weiss was die Funktion liefert und der Typ,
    von welchem das Ergebnis ist, passt mit dem Typ der Variablen, welcher das
    Ergebnis zugewiesen werden soll. Machst du hingegen sowas:

    int result = sum(1.0, 4.5);
    

    dann sagt dir der Compiler, dass hier die Typen nicht uebereinstimmen und du
    mit Genauigkeitsverlust rechnen musst (was im o. Code der fall ist, denn eine
    Variable vom Typ integer kann das Ergebnis von 5.5 nicht aufnehmen).

    mfg
    v R



  • achso ok...grmbl könnte ruhig alles automatisch gehen, wie bei php 😃



  • und was heißt es wenn da steht

    void funktion()
    { 
    //bla
    }
    

    ?



  • Das bedeutet, dass die Funktion nichts zurueck gibt. Es handelt sich hier dann um
    nichts anderes, als wie eine normale Prozedur in anderen Sprachen.

    mfg
    v R



  • und warum muss bei main() auch ein int vor?



  • Das ist per Standard festgelegt.
    Zudem will dein Betriebssystem wissen ob alles klar ging oder ob Fehler auftraten ;), dabei gilt:
    'return 0' für keinen Fehler, und ungleich 0 für Fehler.

    (me hofft das alles stimmt ^^)



  • main() ist die Eintrittsfunktion in deinem Programm. Ein Programm liefert immer
    einen Wert an das Betriebssystem zurueck. Diesen Wert kann man bei manchen
    Betriebssystemen abfangen (z. B. unter Unix/Linux, bei Windows weiss ich das
    nicht). 0 Bedeutet, dass das Programm ordnungsgemaess beendet worden ist. Ein
    Wert ungleich 0 bedeutet, dass das Programm auf eine andere Art und Weise
    beendet worden ist (es sei denn, der Autor definiert die Werte anders).

    Ist nun der Rueckgabetyp von main() void, so bedeutet das, dass die Funktion
    nichts zurueck gibt. Der Rueckgabewert, den das Betriebssystem erwartet ist also
    undefiniert.

    mfg
    v R


Log in to reply