Funktion ausgeben?



  • Ich hab grade ein bisschen mit Funktionen rumgespielt. Jetzt hab ich das hier mal versucht:

    #include <iostream>
    using namespace std;
    
    long long func(void){}
    
    int main()
    {
        cout << func();
    }
    

    Ich hab jetzt gedacht, es würde die größtmögliche Zahl für

    long long
    

    ausgegeben, nämlich eine 19-stellige Zahl. Ich hab also daneben gleich mal

    #include <limits.h>
    //...
    cout << LONG_LONG_MAX;
    }
    

    ausprobiert, aber es wird eine etwas größere Zahl ausgegeben (20-stellig). Was passiert da also bei

    cout << func();
    

    ?



  • Warum sollte bei dem Aufruf cout << func(); eine Zahl ausgegeben werden? Er wird höchstens der nicht vorhandene Return Wert ausgegeben.

    Bei deinem Programm gibt es also eine Fehlermeldung.

    Verstehe ich da falsch? Erkläre nochmal genauer, was dein Problem ist!

    lg, freakC++



  • Ich will wissen, was da passiert^^ Ich bekomm unter Code::Blocks mit dem gcc 4.4.1 keine Art von Fehlermeldung oder Warnung. Es wird kompiliert und eine dicke Zahl ausgegeben. Und ich will wissen, warum da jetzt eine so große Zahl bei rauskommt. Wo kommt die Zahl her?



  • Die zahl ist sicher ein Zufallswert der gerade im Speicherbereich von long long ist.

    Incocnito schrieb:

    #include <iostream>
    using namespace std;
    
    long long func(void){}
    
    int main()
    {
        cout << func();
    }
    
    #include <iostream>
    using namespace std;
    
    long long func(void){ return 200;} // jetzt wird 200 ausgegeben
    
    int main()
    {
        cout << func();
    }
    

  • Mod

    Incocnito schrieb:

    Ich will wissen, was da passiert^^ Ich bekomm unter Code::Blocks mit dem gcc 4.4.1 keine Art von Fehlermeldung oder Warnung. Es wird kompiliert und eine dicke Zahl ausgegeben. Und ich will wissen, warum da jetzt eine so große Zahl bei rauskommt. Wo kommt die Zahl her?

    GCC warnt da aber, wenn man die Warnoptionen anschaltet (und das sollte man!). Ansonsten ist der fehlende Returnwert ein "Feature" beim GCC. Ehrlich gesagt weiß ich nicht auswendig, was genau dann zurückgegeben wird, aber es ist in der Compilerdokumentation beschrieben.



  • Echt der GCC warnt da nur? Mmmh...ein Return Werte sollte in solchen Fällen immer vorhanden sein...

    Also: Eigentlich wird nichts ausgegeben. Falls doch, dann handelt es sich um Speichermüll (?). Bei mir wird jedoch gleich eine Fehlermeldung angezeigt.

    lg, freakC++


Anmelden zum Antworten