Standardparameter (C++)
HeuJi 11.09.2004 - 17:36 775 3
HeuJi
OC Addicted
|
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? #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?)
Bearbeitet von HeuJi am 11.09.2004, 17:40
|
gue
Addicted
|
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
OC Addicted
|
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
Pilot
|
Ist auch klar, welchen "Namen" sollte sonst z.B. "2" haben? Oder "a+b"?
|