Hallo Spieleprogrammierer,
ich arbeite gerade mit dem Buch "C++ für Spieleprogrammierer von Heiko Kalista" Ist ein Super Buch und bis jetzt sind die ersten zwei Kapitel Super verständlich geschrieben, dennoch stecke ich gerade beim Casting fest.
Ist static_cast nur da, um den Compiler zu sagen, dass z.B die int Variable richtig ist, wenn man int + float rechnet, damit der Compiler keine Fehler ausspuckt? Oder funktioniert auch folgendes:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
using namespace std;
int main()
{
float a = 5.5;
float b = 3.6;
int c = 5;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
cout << "Rechne c=a*b" << endl << endl;
static_cast<float>(c);
c=a*b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
getchar();
return 0;
}
|
Ziel ist zum Beispiel, dass erst float a und float b ausgegeben wird und die int c. Dann muss aber c überschrieben werden mit dem Ergebnis der Multiplizierung von a und b. Doch diese beiden (a,b) sind float und (c) ist eine int variable, c muss also umgewandelt werden in eine float, was ich mit Zeile 13 versuche.
Nun die Frage : Ist es mit static_cast möglich, eine int in eine float umzuwandeln, damit Kommazahlen gespeichert werden können und ich mache nur was falsch, oder ist static_cast wirklich nur dazu da, dem Compiler zu sagen, ich weiß, dass zwei Float Multipliziert werden, aber es hat seine Richtigkeit, dass c als Integer gespeichert wird, und du musst mir keine Warnung ausspucken?
Gruß von einem blutigen C++ Anfänger