Problem bei übergabe von Zahlen an ausgelagerte Funktion



  • Bin erst kurz uber die Startlinie des Programiermaratons gelaufen und deswegen noch am Anfanfang des Programierens. Ich hab in Folgendem Program ein (für mich ) komischen Fehler

    
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    unsigned int farbe(int i)
    {
        HANDLE ausgabe = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(ausgabe, i);
        cout<< "hallo welt"; cout << endl << endl;
    
    }
    int main()
    {   int i = 1;
    
    
    
            for(i=1; i<255; i++)
            {   cout<< i <<"    " << farbe(i);
            }
        return 0;
    
    }
    
    

    Ich weiss das es so relativ unnötig ist. Aber ich wollts einfach mal ausprobiren.
    Das Problem welches jetzt auftrit ist das dem i in der ausgelagerten Funktion nicht 1 2 3... übergeben wird sondern sehr große Zahlen und ohne Unsingned diese auch als negative Zahlen. Wobei die Farbausgabe an sich aber stimmt. Sprich sie so ist als währe der Code einfach in der main Funktion. Kann mir bitte jemand erklären wieso das so ist?
    Kann es an dem Farbbefehl liegen? Hab diesen nähmlich (noch) nicht verstanden.🙃



  • Du solltest die Warnungen deines Compilers einschalten!
    Deine Funktion farbe gibt bisher keinen Wert zurück (return ...), d.h. in dem entsprechenden internen Register steht ein zufälliger Wert drin.

    Für diese Funktion ist logisch aber auch kein Rückgabetyp erforderlich, d.h. void, nur kannst du dann auch nicht mehr die Funktion mittels cout << farbe(i) aufrufen, sondern mußt diese Funktion als eigenständige Anweisung (vor oder nach der Ausgabe) aufrufen.


Anmelden zum Antworten