Standardparameter (C++)

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/standardparameter_c_124313/page_1 - zur Vollversion wechseln!


HeuJi schrieb am 11.09.2004 um 17:36

Also ich hab da ein ganz einfaches Beispiel geschrieben.
Es sind 3 zahlen angegeben die multipliziert werden.
Wenn zur Berechnung 1 bis 3 Parameter nicht angegeben wird (werden), werden die Werte der Standardparameter übernommen, aber es kommt trotzdem was falsches raus, manche sind wiederum richtig.
Kann mir jemand erklären wieso?

Code:
#include<iostream.h>

int cube(int a=5,int b=2, int c=3);

int main()
{
	int a=4;
	int b=5; 
	int c=6;
	int area;

	area=cube(a, b, c);
	cout<<area<<endl;
	area=cube(b,c);
	cout<<area<<endl;
	area=cube(a);
	cout<<area<<endl;
	area=cube(a,c);
	cout<<area<<endl;
	area=cube(a,b);
	cout<<area<<endl;
	area=cube(c);
	cout<<area<<endl;



}

int cube(int a, int b, int c)
{
	return (a*b*c);
}

Ausgabe:
120 (4*5*6=120)
90 (5*5*6=150?)
24 (4*2*3=24)
72 (4*2*6=48?)
60 (4*5*3=60)
36 (5*2*6=60?)


gue schrieb am 11.09.2004 um 17:56

Na ganz einfach. Du hast
int cube(int a=5,int b=2, int c=3);
definiert.
Wenn du jetzt cube() mit weniger als 3 Parameter aufrufst, so werden die "von vorne aufgefüllt". Wie deine Variablen heißen ist dem Compiler da ziemlich wurscht.
cube (b, c); ist nichts anderes als cube (5, 6); und das wird als cube (5, 6, 3); verstanden.


HeuJi schrieb am 11.09.2004 um 18:05

achja thx, weiss schon was gemeint ist.
entscheidend ist also die Reihenfolge wie die Werte aufgefüllt werden und nicht die Namen der Parameter.


Ringding schrieb am 13.09.2004 um 00:53

Ist auch klar, welchen "Namen" sollte sonst z.B. "2" haben? Oder "a+b"?




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025