Wie kann ich Pi verwenden ?
-
Hallo !
Wie kann ich in C++ Pi verwenden ? Ich habe schon versucht math.h bzw. cmath einzubinden und dann mit Pi, PI und M_PI, aber immer sagt er: undeclared (first use this function). In den FAQs hab ich nichts gefunden, was muss ich da machen ?
hendrik
-
#include <iostream> #include <cmath> int main() { std::cout << M_PI << std::endl; }
-
Vielleicht erst die Funktion benutzen, die in der Errormessage steht?
-
[quote="Gast248"]Hallo !
Wie kann ich in C++ Pi verwenden ? Ich habe schon versucht math.h bzw. cmath einzubinden und dann mit Pi, PI und M_PI, aber immer sagt er: undeclared (first use this function). In den FAQs hab ich nichts gefunden, was muss ich da machen ?
hendrik[/quote]
du kannst es mit #define PI 3.14159 includieren
hanna1
-
hanna1 schrieb:
du kannst es mit #define PI 3.14159 includieren
Mit #define inkludiert man nichts, man definiert damit Makros die dann vom Präprozessor expandiert werden; ist also hierfür eher suboptimal...
-
Wozu denn überhaupt so ein riesen umweg mit cmath oder #define?
wieso nicht einfachconst float PI = 3.14159
und wenns sein muss auch global deklarieren.
und schon hat man PI.
-
Ponto schrieb:
#include <iostream> #include <cmath> int main() { std::cout << M_PI << std::endl; }
M_PI ist AFAIK nur eine Erweiterung die nicht im Standard enthalten ist.
-
[quote="nman"][quote="hanna1"]du kannst es mit #define PI 3.14159 includieren[/quote]
Mit #define inkludiert man nichts, man definiert damit Makros die dann vom Präprozessor expandiert werden; ist also hierfür eher suboptimal...[/quote]Das stimmt nicht, ich kann zum Beispiel
#include <iostream.h>
#include <conio.h>
#define PI 3.14159 oder feststehende Werte für eine Schleife einbinden
-
loooooooooooooooooooooooooooooooooooool.
-
MaSTaH schrieb:
Ponto schrieb:
#include <iostream> #include <cmath> int main() { std::cout << M_PI << std::endl; }
M_PI ist AFAIK nur eine Erweiterung die nicht im Standard enthalten ist.
Du hast Recht. Es ist nicht in diesem sondern im POSIX Standard enthalten.
-
SIDEX schrieb:
Wozu denn überhaupt so ein riesen umweg mit cmath oder #define?
wieso nicht einfachconst float PI = 3.14159
und wenns sein muss auch global deklarieren.
und schon hat man PI.wo ist denn da der riesen aufwand bei #define? is sogar kürzer!?
-
Weil man define für den Präprozessor verwenden soll und nicht um damit Konstanten im Programm zu definieren.
MfG SideWinder
-
oder vielleicht für den Anfang etwas einleuchtender: der Präprozessor geht durch das Programm und ersetzt alle defines. Erst danach bekommt der Compiler den Code zu sehen. Wenn jetzt an irgendeiner Stelle was nicht paßt, dann wird sich der Compiler nicht über den Namen PI beschweren, den kenn er nämlich garnicht, sondern über die Konstante, die an dieser Stelle eingesetzt wurde. Das kann mitunter ziemlich verwirrend sein.
Also: define hat Nachteile gegenüber der const-Variante. const hat aber keine Nachteile gegenüber dem define, also sollte man es auch verwenden.
und nein: mit const isses auch nicht langsamer! Der Compiler setzt die Werte dann für einen ein... aber erst wenn er sich vergewissert hat, daß das auch Sinn macht.
MfG Jester