Was ist er Unterschied zwischen (float)val und float(val)?
-
Hi Leute,
macht es einen Unterschied ob ich schreibe (float)val oder float(val)?
Gruß
Scarabol
-
Naja,
float(val)ist ein Konstruktor aufruf während(float)valder C Cast ist. Ein Unterschied ist mir nicht bekannt, zumindest bei fundamentalen Typen. Allerdings würde ich keine der beiden Arten verwenden, da du in so einem C Cast einreinterpret_cast,static_castundconst_castvereint hast. Verwende lieber die C++ Casts. In diesem Fall wohl einstatic_cast<float>(val).Grüssli
-
ok, danke, mach ich, die C++ Casts sehen aber so "unschön" aus

Gruß
Scarabol
-
Scarabol schrieb:
ok, danke, mach ich, die C++ Casts sehen aber so "unschön" aus

Dafür sind sie klar ersichtlich und machen nicht Dinge, welche du womöglich gar nicht möchtest

Grüssli
-
Scarabol schrieb:
ok, danke, mach ich, die C++ Casts sehen aber so "unschön" aus

Find ich auch. C-Casts gehen imho in Ordnung, solange man genau weiß, was man macht...
-
Also mir sind die C Casts auch lieber und ich hab bisher noch nie irgendwo C++ Casts benutzt.
-
Xebov schrieb:
Also mir sind die C Casts auch lieber und ich hab bisher noch nie irgendwo C++ Casts benutzt.
Endlich mal Unterstützung! Die bekommt man sonst nur von fricky...

-
_matze schrieb:
Find ich auch. C-Casts gehen imho in Ordnung, solange man genau weiß, was man macht...
Es geht aber darum, dass einem der Compiler es zeigen kann, wenn man nur denkt, dass man weiss, was man macht.
Man sollte dem Compiler so viele Hilfestellungen wie möglich geben, sonst kann er keine Fehler für einen aufdecken. Aus Bequemlichkeit auf kostenlose Compiletimechecks zu verzichten, ist echt *%&$§.
Außerdem finden man die C++-Casts im Code viel besser. Vor allem bei der völlig Whitespace-freien Programmierung, der hier einige Spezis nachhängen.
-
Tachyon schrieb:
Außerdem finden man die C++-Casts im Code viel besser. Vor allem bei der völlig Whitespace-freien Programmierung, der hier einige Spezis nachhängen.
Hm, ich weiß nicht, wieso man einen solchen Cast nicht sehen sollte:
(long)p;Ich sehe den sehr gut, auch wenn er nicht nochmal 10 Zeichen breiter ist!

Und Whitespaces sind gut - in Maßen. Ich hasse solche Notierungen:
int i = ( x + y ) * z ;Wer so notiert, sollte sich echt überlegen, ob er nicht lieber den Zeichenabstand seines Editors anpasst...

-
_matze schrieb:
Hm, ich weiß nicht, wieso man einen solchen Cast nicht sehen sollte:
(long)p;es sei denn p ist n zeiger

-
_matze schrieb:
Endlich mal Unterstützung! Die bekommt man sonst nur von fricky
aber nur wenn sich deine meinung mit meiner deckt. in diesem konkreten fall hast du auch meinen segen.

-
Shade Of Mine schrieb:
_matze schrieb:
Hm, ich weiß nicht, wieso man einen solchen Cast nicht sehen sollte:
(long)p;es sei denn p ist n zeiger

Nee, nicht es sein denn. Das kann gerne auch ein Zeiger sein (das meinte ich mit p auch), und ich bin mir bewusst, dass da reinterpretiert wird (ist ja schließlich meine Intention). Daher mach ich das auch ohne "Sicherheitsrisiko" mit nem C-Cast! Da alle Zeiger mit Präfix "p" gekennzeichnet sind, ist mir bei solchen Casts direkt klar, was ich da sehe, das würde mir der reinterpret_cast auch nicht klarer machen. Klarer als klar geht nunmal nicht
. Also wie anfangs gesagt, kein Problem, solange man weiß was man tut. 
-
oder man verwendet keine sinnlose UN und macht reinterpret

ist ein smartpointer ein zeiger?
-
_matze schrieb:
...kein Problem, solange man weiß was man tut.

Tust da aber anscheinend oft nicht, wenn man sich Deinen Code und Deine Beispiele so anguckt.

-
_matze schrieb:
..., solange man weiß was man tut.

Weisst du das auch, wenn du nach einem Jahr plötzlich wieder an dem Code rumschrauben musst? Oder wenn du ihn jemand anderem übergeben musst, damit der daran weiterarbeitet?
Den aktuellen Code kennt man meistens immer bis ins Detail. Wenn man ihn später aber nochmals bearbeitet mit einer Pause dazwischen, dann ist es wichtig, dass man den Code noch einwandfrei verstehen kann.Durch das verwenden von C++ Casts kannst du dir selber helfen, Dinge im Code hervorzuheben, bzw. als nicht weiter wichtig abzutun.
Einstatic_castkann meistens schnell überflogen werden.
Eindynamic_castist über C Cast gar nicht möglich
Einreinterpret_casterfordert höhere Aufmerksamkeit.
Einconst_castdeutet auf Designfehler hin :pGrüssli
-
Ich find's als Konstruktor recht nett, wenn's risikolos und "logisch" ist

int i = ...; double s = sin( double(i) );
-
Dravere schrieb:
Ein
const_castdeutet auf Designfehler hin :pBegründung?
-
Mitleid schrieb:
Dravere schrieb:
Ein
const_castdeutet auf Designfehler hin :pBegründung?
Weil etwas konstantes konstant sein soll und nicht plötzlich beschrieben werden muss. Wenn das Objekt beschrieben werden muss, dann sollte es von Anfang an nicht konstant sein. Notfalls gäbe es noch das Schlüsselwort
mutable, wobei auchmutablemit bedacht eingesetzt werden sollte. Meistens ist es nicht nötig. Ein berechtigte Verwendung vonconst_cast, habe ich bisher noch nicht gesehen.Grüssli
-
Mitleid schrieb:
Dravere schrieb:
Ein
const_castdeutet auf Designfehler hin :pBegründung?
const_cast darf man nur Verwenden wenn das gecastete Objekt eigentlich konstant ist (eine Änderung liefert ein undefiniertes Verhalten), aber man nicht "const-correct" programmiert hat. Eigentlich sollte bei sauberer Programmierung const_cast nur selten oder garnicht vorkommen (und zumeist nur an Stellen, wo man auf eine C-Schnittstelle zugreift; wobei es auch in reinen C++ Programmen durchaus seltene Anwendungsfälle geben kann).
-
_matze schrieb:
Endlich mal Unterstützung! Die bekommt man sonst nur von fricky...

Keine Ursache.

Dravere schrieb:
Weisst du das auch, wenn du nach einem Jahr plötzlich wieder an dem Code rumschrauben musst? Oder wenn du ihn jemand anderem übergeben musst, damit der daran weiterarbeitet?
Den aktuellen Code kennt man meistens immer bis ins Detail. Wenn man ihn später aber nochmals bearbeitet mit einer Pause dazwischen, dann ist es wichtig, dass man den Code noch einwandfrei verstehen kann.Wurden nicht genau zu diesem Zweck die Äußerst praktischen Kommentare im Zeitlosen Design eingebaut?

Was die C-Casts generell angeht ich verwende zzt nur die und hatte bisher nicht einen Cast der nicht genau da sgetan hat was ich wollte.