Warum ist das so?



  • #include <iostream>

    using namespace std;

    inline int beispiel(int x)
    {
    int erg;
    erg = x;
    return erg;
    }
    int main()
    {
    int a ,b;

    cin>>a;
    beispiel(a);
    cout<<beispiel;

    return 0;
    }

    Egal welche Zahl ich eingebe. Es kommt immer 1 raus. Warum ist das so?
    Vorher wollte ich Rechenoperationen ausprobieren aber auch da kam stets immer eins raus.


  • Mod

    Wie man seinen Beitrag lesbar formatiert

    cout<<beispiel;
    

    Das beispiel hier ist kein Funktionsaufruf. Es wird, wenn du das so schreibst (also ohne Klammern wie in der Zeile zuvor), als Zeiger auf die Funktion beispiel interpretiert. Der Streamoperator<< kann so direkt keine Funktionszeiger ausgeben, aber es gibt eine automatische Umwandlung von Funktionszeigern nach bool und der Streamoperator<< kann bool ausgeben. Da dies auch der einzige hier mögliche Umwandlungspfad ist, geht der Compiler davon aus, dass dies auch tatsächlich deine Absicht war und beschwert sich nicht weiter. Da die Adresse der Funktion nicht 0 ist, wird dies als der Boolwert true aufgefasst, der als "1" dargestellt wird.

    Und noch die Antwort auf die voraussichtliche Folgefrage:

    cin >> a; 
    cout << beispiel(a);
    


  • aah okay danke für die antwort! ja auf die lösung wäre ich dann auch gekommen ,hat mich nur interessiert warum der immer auf 1 kam. Naja jetzt weiss ich es ja nochmalls danke für deine zeit!



  • Ziemlich gute Erklärung von SeppJ. Auf das Programm selbst will ich gar nicht eingehen. Was waren das noch für Zeiten als man sich alles selber beibringen musste - kein Internet und so ein überflüssiger Quatsch damals. :p



  • konnte man sich sowas zu solchen zeiten auch komplett selber beibringen?Ich fange zwar nächstes schuljahr an sowas zu lernen aber ich glaube ohne internet wäre ich jetzt ziemlich aufgeschmissen 😃



  • Mit selbst beibringen ist hier gemeint, dass man Bücher liest und diese durcharbeitet.


Log in to reply