M_PI..... Fehlerhaftes Programm
-
SeppJ schrieb:
Ich verstehe diese Sätze nicht, aufgrund ihrer sprachlichen Mängel.
Noch etwas, was nicht ganz dazupasst.. ich habe zwar angefangen, kenne mich auch ein bisschen mit Funktionen, Schleifen und Zeigern aus, aber könntest du mir mal etwas für Anfänger empfelen, das auch weitergeht nach den Konsolenanwendungen. Ich glaube, dass ich auch ein wenig Hilfe, bzw. ein Tutorial (spezifisch) für Konsolenanwendungen brauche, da ich sicher noch nicht durch bin..
-
Hacker schrieb:
SeppJ schrieb:
Ich verstehe diese Sätze nicht, aufgrund ihrer sprachlichen Mängel.
Noch etwas, was nicht ganz dazupasst.. ich habe zwar angefangen, kenne mich auch ein bisschen mit Funktionen, Schleifen und Zeigern aus, aber könntest du mir mal etwas für Anfänger empfelen, das auch weitergeht nach den Konsolenanwendungen. Ich glaube, dass ich auch ein wenig Hilfe, bzw. ein Tutorial (spezifisch) für Konsolenanwendungen brauche, da ich sicher noch nicht durch bin..
Dann die Antwort an Jesse: Das ist nix. Funktionen, Schleifen und Zeiger ist vielleicht gerade mal genug, um eine C-Bibliothek so halbwegs zu benutzen. So wie du schreibst, kennst du kein einziges der Konzepte die C++ von C abheben. Wenn du über die Konsole hinaus willst, wirst du Bibliotheken benutzen müssen. Wenn diese Bibliotheken für C++ gemacht sind (Es gibt auch welche für C, damit solltest du zurecht kommen, wenn das stimmt, was du sagst. Aber das wird unnötig umständlich), dann werden sie viele dieser Sprachmittel benutzen, die dir gänzlich unbekannt sind. Du scheinst nicht einmal die Standardbibliothek von C++ zu kennen (die diese Konzepte in Teilen auch sehr stark nutzt).
-
Du kannst Dir pi auch einfach mit
double const PI = std::acos(-1.)
vom Compiler ausrechnen lassen. Sind die trigonometrischen Funktionen in C++11 eigentlichconstexpr
?
-
Tachyon schrieb:
Du kannst Dir pi auch einfach mit
double const PI = std::acos(-1.)
vom Compiler ausrechnen lassen. Sind die trigonometrischen Funktionen in C++11 eigentlichconstexpr
?Keine Ahnung zu der formalen Regelung in C++11, aber normalerweise setzen Compiler die trigonometrischen Funktionen direkt ein, wenn der Ausdruck konstant ist. Du wirst feststellen, dass man in der Regel nicht die Mathe-Bibliothek mitlinken muss (in C++ sowieso nicht, ich meine C-Compiler), wenn die Ausdrücke alle konstant sind.
-
Tachyon schrieb:
Du kannst Dir pi auch einfach mit
double const PI = std::acos(-1.)
vom Compiler ausrechnen lassen. Sind die trigonometrischen Funktionen in C++11 eigentlichconstexpr
?Wieso? IMO wären da Makros besser aufgehoben...
-
Hacker schrieb:
Wieso? IMO wären da Makros besser aufgehoben...
Was siehst du denn als Vorteil eines Makros?
-
Edit ^4:
Ne, lieber Funktionen und constexpr. Makros sind nicht schneller.
-
Hacker schrieb:
Edit: Ah, ihr meint Funktionen! Da muss ich kurz nachdenken, aber da isses natürlich was anderes
In allen Fällen wären Makros keine gute Wahl gewesen...
-
gfhfgh schrieb:
Hacker schrieb:
Edit: Ah, ihr meint Funktionen! Da muss ich kurz nachdenken, aber da isses natürlich was anderes
In allen Fällen wären Makros keine gute Wahl gewesen...
Stimmt, die sind ja auch nich typsicher, nicht?
-
Tachyon schrieb:
Du kannst Dir pi auch einfach mit
double const PI = std::acos(-1.)
vom Compiler ausrechnen lassen. Sind die trigonometrischen Funktionen in C++11 eigentlichconstexpr
?Eine explizite Aussage dazu kann ichnicht zu finden. Allerdings scheint es zumindest erlaubt zu sein, beispielsweise ist in 26.8/9 nur von Signaturen die Rede und constexpr ist nicht Teil der Signatur (der Rückgabetyp allerdings auch nicht).
-
Hacker schrieb:
gfhfgh schrieb:
Hacker schrieb:
Edit: Ah, ihr meint Funktionen! Da muss ich kurz nachdenken, aber da isses natürlich was anderes
In allen Fällen wären Makros keine gute Wahl gewesen...
Stimmt, die sind ja auch nich typsicher, nicht?
Das ist fast schon das geringste Problem. Schau dich einfach mal bei Google um. Es gibt genug Beispiele, wo Makros Bugs erzeugen, die man nur schwer findet.
Fängt schon bei Kleinigkeiten wie z.B. MY_MACRO(++i); an.
-
Wie kann eine trigonometrische Funktion constexpr sein, wenn sie einen berechnetes Objekt zurückgibt?
-
Hacker schrieb:
Wie kann eine trigonometrische Funktion constexpr sein, wenn sie einen berechnetes Objekt zurückgibt?
Wenn die Funktion bei gleichem Argument immer das gleiche zurück gibt und auch sonst keine Seiteneffekte hat, ist das erlaubt. Das ist sogar eigentlich der ganze Witz an constexpr.
-
Tachyon schrieb:
Du kannst Dir pi auch einfach mit
double const PI = std::acos(-1.)
Vorsicht damit, da consts in C++ internal linkage haben verletzt du bspw. mit einer inline-Funktion
inline double circlearea(double r) { return PI * r * r; }
, die in mehreren Übersetzungseinheiten eingebunden wird, die ODR, da sich pi in beiden Definitionen auf eine andere Variable bezieht.
Funktioniert auf gängigen Compilern zwar, ist aber wenn man stur nach Standard geht nicht erlaubt.
-
@jokesterUnd was hat das mit der ODR zu tun?
@camper: Danke für die Info.
-
Die ODR besagt unter anderem, dass inline-Funktionen in jeder Übersetzungseinheit die gleiche Definition haben müssen.
-
noch was was nicht ganz hinneinpasst.. habe zwar angefangen.. kenne mich einn bissel mit funktionen und schleifen aus.. zeiger auch bekannt...
aber kannste mal etwas empfelen für anfänger die dann auch weitergeht nach der consolenanwendungen
aber ich glaube ich brauche auch was für consolen anwendungen da ich sicher nciht durch bin..
so.. da es einige problems gab.... das ganze auf deutsch:
Suche ein gutes Buch/ Tutoile(was aber ja nicht empfolenwird ... warscheinlich nciht die beste wahl)/...
habe bisjetzt mit Tutorial gelernt... aber man merkt das optimale ist es nicht...
und zwar hiermit:
http://www.youtube.com/user/00z3r000?feature=g-all-c
ist ganz gut erklärt
wenns noch weitere fragen gibt für meine verwurschtelte frage da ich nicht so richtig wusste wie ich mich ausdrücken kann
-
gfhfgh schrieb:
Hacker schrieb:
gfhfgh schrieb:
Hacker schrieb:
Edit: Ah, ihr meint Funktionen! Da muss ich kurz nachdenken, aber da isses natürlich was anderes
In allen Fällen wären Makros keine gute Wahl gewesen...
Stimmt, die sind ja auch nich typsicher, nicht?
Das ist fast schon das geringste Problem. Schau dich einfach mal bei Google um. Es gibt genug Beispiele, wo Makros Bugs erzeugen, die man nur schwer findet.
Fängt schon bei Kleinigkeiten wie z.B. MY_MACRO(++i); an.Naja, klar. Bei sowas hat aber ein Vollidiot programmiert (und wer den Fehler nicht sieht ist selbst einer):
#define add(x,y) x+y //... auto zahl(5 * add(4, 5));
Nein, das Ergebnis ist nicht 45.
-
Jesse schrieb:
so.. da es einige problems gab.... das ganze auf deutsch:
Bitte arbeite an deiner Rechtschreibung und Grammatik! Wenn deine Beiträge wie hingekotzt aussehen, dann bekommst du in der Regel auch dazu passende Antworten.
Suche ein gutes Buch/ Tutoile(was aber ja nicht empfolenwird ... warscheinlich nciht die beste wahl)/...
-
SeppJ schrieb:
Jesse schrieb:
so.. da es einige problems gab.... das ganze auf deutsch:
Bitte arbeite an deiner Rechtschreibung und Grammatik! Wenn deine Beiträge wie hingekotzt aussehen, dann bekommst du in der Regel auch dazu passende Antworten.
Suche ein gutes Buch/ Tutoile(was aber ja nicht empfolenwird ... warscheinlich nciht die beste wahl)/...