Muss ich initialisieren schwimmt mit 0.f?

Wenn ich initialisieren float Variablen in meinem Programm, ich haben allgemein Vektoren wie:

Vector forward(0.f,0.f,-1.f),right(1.f,0.f,0.f),up(0.f,1.f,0.f)

(Die Vektoren sind nur 3 Schwimmer wie struct Vector{ float x,y,z; };)

Sieht viel einfacher zu Lesen als:

Vector forward(0,0,-1),right(1,0,0),up(0,1,0)

Muss Initialisiere ich meine float Variablen mit floats? Bin ich etwas zu verlieren oder aber irgendeine Art von Strafe, wenn ich ganze zahlen (oder doubles) zum initialisieren einer float?

  • Sie sollten nicht wirklich, Vektor-als eine Struktur, die name, denn das wird leicht verwechselt mit der stl::vector. Sie könnte stattdessen nennen Sie es so etwas wie vector3f oder vector3d
  • In FORTRAN müssen Sie das entsprechende Zuordnung, also eine Doppel-null hat 0 zu sein.0d0, 0 nicht.0e0 oder 0. Eine Menge Leute, die starten mit FORTRAN verbrannt werden, durch dieses Verhalten und explizit 0 setzen.f in Ihrem C++ - code. C++ hingegen tatsächlich gibt die wie, um eine Literale 0 oder 1 das entsprechende floating-point-Wert.
  • Ich denke, die Initialisierung wird nicht das problem sein. Jedoch, wenn Sie vergleichen, desto größer Datentyp verwendet wird (0.0 f gegen 0.0), so dass es dazu neigt, so werden langsamer. Es hängt natürlich auch von der use-case, aber nicht mit dem richtigen Typ sind Sie verursacht definitiv eine Umstellung. Entweder der Kompilierung oder zur Laufzeit. Vermeiden, es spart Zeit.
InformationsquelleAutor bobobobo | 2012-09-28
Schreibe einen Kommentar