"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Standardparameter (C++)

HeuJi 11.09.2004 - 17:36 775 3
Posts

HeuJi

OC Addicted
Avatar
Registered: Jul 2001
Location: Vienna
Posts: 7379
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?)
Bearbeitet von HeuJi am 11.09.2004, 17:40

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
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
Avatar
Registered: Jul 2001
Location: Vienna
Posts: 7379
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
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Ist auch klar, welchen "Namen" sollte sonst z.B. "2" haben? Oder "a+b"?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz