Menu oder kein Menu?
-
Hallo,
Ich hab hier folgende Funktion:void Window(int width,int height,bool menu=true) int main() { Window (640,480); cout <<endl; Window (800,600,false); return 0; } void Window(int width, int height, bool menu) ......Meine Frage ist nun wie der compiler entscheidet ob er
Windo(640,480;)oder
Window(800,600,false);nehmen muss.
Ich hoffe einer kann mir helfenMfg Kim
-
In deinem Fall nimmt er wohl beide. Hier ist ja keine Abfrage drin.
-
Kim 92 schrieb:
Hallo,
Ich hab hier folgende Funktion:void Window(int width,int height,bool menu=true) int main() { Window (640,480); cout <<endl; Window (800,600,false); return 0; } void Window(int width, int height, bool menu) ......Meine Frage ist nun wie der compiler entscheidet ob er
Windo(640,480;)oder
Window(800,600,false);nehmen muss.
Mfg KimFalsche Frage

Er entscheidet nichts, denn Du stellst ja auch keine Frage, die er zu entscheiden hätte.
Du sagst "Rufe die Funktion Window mit (640,480,true)". Wenn das Programm das getan hat, und die Funktion beendet hat, wird endl ausgegeben, also ein Zeilenvorschub.
Danach ruft er Window(800,600,false) auf.Du programmierst immer von oben nach unten. Er macht eine Anweisung nach der anderen.
Wenn Du etwas entscheiden möchtest, dann musst Du das entsprechend ausdrücken.int main() { bool grossesFenster = true; if( grossesFenster ) Window(800,600,false); else Window(640,480); cout <<endl; }Nun hast Du eine Entscheidung drin... nun musst Du klären, wovon Du diese Entscheidung abhängig machst.
Viel Erfolg!
-
Hallo,
Thx erstmal für die Antwort.Falsche Frage

Er entscheidet nichts, denn Du stellst ja auch keine Frage, die er zu entscheiden hätte.
Du sagst "Rufe die Funktion Window mit (640,480,true)". Wenn das Programm das getan hat, und die Funktion beendet hat, wird endl ausgegeben, also ein Zeilenvorschub.
Danach ruft er Window(800,600,false) auf.
Du programmierst immer von oben nach unten. Er macht eine Anweisung nach der anderen.
Wenn Du etwas entscheiden möchtest, dann musst Du das entsprechend ausdrücken.Hmm, ne so ist des leider nicht. Schon klar ich stell ihm keine Frage, da liegt ja auch das Problem, zur verdeutlichung poste ich einfach mal das gesamte Proggi:
#include <iostream> using namespace std; void Window(int width, int height, bool menu=true); int main() { Window(640,480); cout << endl; Window(800,600,false); return 0; } void Window(int width, int height, bool menu) { cout << "Es wurde ein Fenster mit einer Breite von"<< width <<"und einer Hoehe von" << height<<"erstellt.\n"; if(menu==true) { cout <<"das Fenster hat ein Menu"; } else { cout << "das Fenster hat kein menu"; } cin.get(); }Wenn man nun das Proggi startet stellt man fest das er folgendes ausgibt:
Es wurde ein Fenster mit einer Breite von640 und einer hoehe von 480 erstellt. Das Fenster hat ein menu
Jetzt bleibt halt nur die Frage wie er es entscheidet.....
Mfg Kim
-
Kim 92 schrieb:
Wenn man nun das Proggi startet stellt man fest das er folgendes ausgibt:
Es wurde ein Fenster mit einer Breite von640 und einer hoehe von 480 erstellt. Das Fenster hat ein menu
Jetzt bleibt halt nur die Frage wie er es entscheidet.....
Dies kann nicht die korrekte Ausgabe des Programms sein, da Du zwischen "erstellt." und "Das Fenster" garantiert ein Newline hast.
Probier das mal aus:
int main() { Window(640,480); cout << endl; Window(800,600,false); cout << endl; // <-- Zeile hinzugefügt return 0; }Ich vermute eher, dass die zweite Ausgabe nicht mehr auf dem Bildschirm erscheint, weil mangels endl cout nicht ausgegeben wird. Etwas merkwürdig, denn nach dem Programmende wird cout üblicherweise geleert, also komplett ausgegeben.
Nochmal: Der Compiler entscheidet gar nichts. Der Compiler übersetzt nur das, was Du programmiert hast. Wenn Dir das Ergebnis nicht gefällt, was Du erhältst, dann hast Du in 99,999% der Fälle etwas verkehrtes programmiert bzw. Dir fehlt eine Information (z.B. dass die Ausgabe nicht sofort ausgegeben wird, sondern gepuffert wird).
Die Funktion Window() wird garantiert 2x aufgerufen.