PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleines Problem mit C++ Quelltext


Undertaker
2005-11-09, 11:16:12
hi

bitte nicht lache, ich habe erst vor ein paar tagen mit c++ angefangen :wink:

das ist der quelltext:

#include <iostream>

using namespace std;

bool testeBereich (int Position, int Min, int Max); // Prototyp

// Hauptprogramm
//
int main ()
{
// Variablen
//
int Minimum = 0;
int Maximum = 800;
int xPosition;

cout << "Spielerposition auf der x-Achse: ";
cin >> xPosition;

if (testeBereich (xPosition, Minimum, Maximum) == true)
cout << "Spieler ist noch auf dem Bildschirm" << endl;
else
cout << "Spieler ist ausserhalb des Bildschirms" << endl;

return 0;
}

// testeBereich
//
bool testeBereich (int Position, int Min, int Max)
{
if ((Position >= Min) && (Position < Max))
return true;
else
return false;
}

die allgemeine funktion ist mir recht klar, der quelltext funktioniert auch, aber ich habe ein verständnisproblem:

innerhalb der main-funktion gibt es die variablen

Minimum
Maximum
xPosition

außerhalb der mainfunktion (in testeBereich) wird aber mit

Min
Max
Position

gerechnet, ohne das diese variablen irgendwo definiert werden (deklariert ja, aber nirgendwo bekommen sie einen wert)

wer kann mir erklären, dass das prog trotzdem funktioniert???

thx undertaker

p.s. sry für die schlechte formatierung, ich hoffe ihr schaut aufgrund der recht kurzen länge dennoch durch ;)

Senior Sanchez
2005-11-09, 11:27:12
hi

bitte nicht lache, ich habe erst vor ein paar tagen mit c++ angefangen :wink:

das ist der quelltext:

#include <iostream>

using namespace std;

bool testeBereich (int Position, int Min, int Max); // Prototyp

// Hauptprogramm
//
int main ()
{
// Variablen
//
int Minimum = 0;
int Maximum = 800;
int xPosition;

cout << "Spielerposition auf der x-Achse: ";
cin >> xPosition;

if (testeBereich (xPosition, Minimum, Maximum) == true)
cout << "Spieler ist noch auf dem Bildschirm" << endl;
else
cout << "Spieler ist ausserhalb des Bildschirms" << endl;

return 0;
}

// testeBereich
//
bool testeBereich (int Position, int Min, int Max)
{
if ((Position >= Min) && (Position < Max))
return true;
else
return false;
}

die allgemeine funktion ist mir recht klar, der quelltext funktioniert auch, aber ich habe ein verständnisproblem:

innerhalb der main-funktion gibt es die variablen

Minimum
Maximum
xPosition

außerhalb der mainfunktion (in testeBereich) wird aber mit

Min
Max
Position

gerechnet, ohne das diese variablen irgendwo definiert werden (deklariert ja, aber nirgendwo bekommen sie einen wert)

wer kann mir erklären, dass das prog trotzdem funktioniert???

thx undertaker

p.s. sry für die schlechte formatierung, ich hoffe ihr schaut aufgrund der recht kurzen länge dennoch durch ;)


Position, Min und Max sind die paramter der Funktion testeBereich(). In der main methode heißen diese eben xPosition, Minimum und Maximum und mit diesen wird dann die Funktion testeBereich aufgerufen. Dabei wird der Wert von xPosition nach Position kopiert, von Minimum nach min und von Maximum nach max.

Schau dir das hier mal dazu an:
if (testeBereich (xPosition, Minimum, Maximum) == true)

und an diese Stelle wird dann gesprungen:
bool testeBereich (int Position, int Min, int Max)
{
if ((Position >= Min) && (Position < Max))
return true;
else
return false;
}

Die Namen der parameter sind dazu absolut egal. Der Compiler erkennt aber dass er den ersten paramter an Position, den zweiten an Min und den dritten an Max kopieren muss.

littlejam
2005-11-09, 11:30:50
[...]
if (testeBereich (xPosition, Minimum, Maximum) == true)
[...]
bool testeBereich (int Position, int Min, int Max)
{
if ((Position >= Min) && (Position < Max))
return true;
else
return false;
}

innerhalb der main-funktion gibt es die variablen

Minimum
Maximum
xPosition

außerhalb der mainfunktion (in testeBereich) wird aber mit

Min
Max
Position

gerechnet, ohne das diese variablen irgendwo definiert werden (deklariert ja, aber nirgendwo bekommen sie einen wert)

Min, Max und Position existieren nur innerhalb der Funktion testeBereich und bekommen ihre Werte (und Deklarationen) beim Aufruf.

Gruß

Undertaker
2005-11-09, 11:37:33
Position, Min und Max sind die paramter der Funktion testeBereich(). In der main methode heißen diese eben xPosition, Minimum und Maximum und mit diesen wird dann die Funktion testeBereich aufgerufen. Dabei wird der Wert von xPosition nach Position kopiert, von Minimum nach min und von Maximum nach max.

Schau dir das hier mal dazu an:
if (testeBereich (xPosition, Minimum, Maximum) == true)

und an diese Stelle wird dann gesprungen:
bool testeBereich (int Position, int Min, int Max)
{
if ((Position >= Min) && (Position < Max))
return true;
else
return false;
}

Die Namen der parameter sind dazu absolut egal. Der Compiler erkennt aber dass er den ersten paramter an Position, den zweiten an Min und den dritten an Max kopieren muss.


thx :)