double wert aus int function zurückgeben
-
Hallo
Ich habe ein Unterprogramm. z.B.:
int bla(int a) { int ergebnis; ergebnis = a*a; return(ergebnis); }In meinem Hauptprogramm brauche ich aber einen double wert, da in der aufgabenstellung expliziete typecast gefordert sind.
int main() { double ergebnis; int a; cin >> a; ergebnis = bla(a); cout << ergebnis; }In diesem fall würde ich ja im Hauptprogramm in Ergebnis (double) einen int Wert schreiben (return wert aus int bla()).
Kann/darf ich folgendes machen?
int bla(int a) { int ergebnis; ergebnis = a*a; return(double(ergebnis)); // <-- int wert in double umwandeln }
-
Wenn du in der Funktion einen double Wert zurückgeben willst dann musst du auch den Rückgabewert von int auf double abändern.
Wenn ein expliziter Cast in der Aufgabenstellung gefordert ist würde ich sowas machen:
ergebnis = static_cast<double>(bla(a));
-
Erstmal ein paar allgemeine Anmerkungen:
voie main()Da wolltest du wohl
void main()schreiben, allerdings sollte es besser so heißen:
int main()Und dann beim
returndeiner Funktion kannst du die Klammern weglassen:return ergebnis;Und für dein Problem wäre es vielleicht ganz angebracht einfach ein
static_castan die richtige Stelle zu platzieren://main.cpp #include <iostream> using std::cout; using std::cin; int bla(int a); int main() { double ergebnis; int a; cin >> a; ergebnis = static_cast<double>(bla(a)); cout << ergebnis; return 0; } int bla(int a) { int ergebnis; ergebnis = a*a; return ergebnis; }Edit: Hmmpf... zu langsam

-
Mizar schrieb:
Erstmal ein paar allgemeine Anmerkungen:
voie main()Da wolltest du wohl
void main()schreiben, allerdings sollte es besser so heißen:
int main()Ja, sollte
void main()heißen.
static_cast kannte ich bisher noch nicht.
Könnte man es nicht auch so machen?
//main.cpp #include <iostream> using std::cout; using std::cin; int bla(int a); int main() { double ergebnis; int a; cin >> a; ergebnis = double ((bla(a)); //<--- cout << ergebnis; return 0; } int bla(int a) { int ergebnis; ergebnis = a*a; return ergebnis; }
-
Realseth schrieb:
static_cast kannte ich bisher noch nicht.
Könnte man es nicht auch so machen?
... ergebnis = double ((bla(a)); //<--- ...Beides läuft auf das selbe hinaus. Aus static_cast geht etwas besser hervor, was genau da passiert, aber letzlich ist es Geschmacksache, welche von beiden Varianten man benutzt.
-
Ok.
Danke euch allen. :xmas1:
-
dooooomi schrieb:
Beides läuft auf das selbe hinaus. Aus static_cast geht etwas besser hervor, was genau da passiert, aber letzlich ist es Geschmacksache, welche von beiden Varianten man benutzt.
Hierbei ist noch anzumerken, dass
static_castnicht nur schneller zu erkennen ist, sondern auch einen genau definierten Aufgabenbereich besitzt (Standardkonvertierungen). Mit dem Klammern- oder Funktionsschreibweise-Cast kannst du beispielsweise schnell Zeiger zerschiessen, ohne dass du es merkst. Oderconstwegcasten. In C++ wurde die Funktionalität genau aufgeteilt instatic_cast,const_castundreinterpret_cast, was viel mehr Sicherheit beim Programmieren verleiht.