Sollte ich explizit abschneiden?

8

Ausgehend von diesem Ausgangspunkt:

%Vor%

Gibt es einen signifikanten Unterschied in C ++ zwischen:

%Vor%

und

%Vor%

Welche sollte ich bevorzugen? Wenn jemand anderes (einschließlich meines zukünftigen Selbst :)) meinen Code liest, sieht es für mich mit der Sekunde aus, dass es expliziter ist, dass ich genau weiß, was ich tue, aber es erfordert eine Bibliothekseinbindung.

Referenz: Gibt es in C ++ eine Abschneidefunktion?

    
Antonio 08.01.2014, 09:54
quelle

2 Antworten

6

Wenn Sie static_cast<int>(y) verwenden, erhalten Sie alle Vorteile, die Sie suchen:

  1. Kürzung
  2. das Casting
  3. explizite Konvertierung für Klarheit.

die Gründe, warum ich trunc()

nicht verwenden werde
  1. es ist nicht so üblich, und wahrscheinlich wird jemand, der Ihren Code liest, die Dokumentation überprüfen müssen (deshalb habe ich das gemacht, aber ich bin kein Experte)
  2. Sie verwenden immer noch die implizite Konvertierung, trunc() gibt kein int.
  3. zurück
  4. es ist für mich nicht explizit genug, nachdem ich Ihren Code und die Dokumentation gelesen habe, habe ich mir folgendes gefragt: "Hat er beabsichtigt, nach int zu casten, oder wollten Sie einfach einen Float ohne den Bruchteil"

Ich kann mir eine oder zwei Situationen vorstellen, in denen ich den Bruchteil loswerden möchte, aber ich möchte immer noch, dass die Variable den Typ float hat, aus verschiedenen Gründen möchte ich die Operation x + 0.1f speichern Bruchteil. also hätte ich immer noch Zweifel an deinen Absichten, vielleicht meintest du nicht die implizite Umwandlung.

ODER Sie können einfach einen kleinen Kommentar daneben setzen int x = y; // yes, I know what I'm doing .
Dies wird auch die Klarheit geben, die Sie brauchen.

    
Mhd.Tahawi 08.01.2014, 10:34
quelle
0

IMO sollten Sie nicht. Das Abschneiden ist eine Funktion, die für Fließkommatypen definiert ist. Es ändert den Typ nicht in einen ganzzahligen Typ.

int x = y; Hier sagen Sie, dass Sie einer int-Variablen etwas zuweisen

int x = trunc(y); Hier sagen Sie, dass Sie den Bruchteilteil aus welchem ​​Grund auch immer löschen und dann

konvertieren

Die Anwendungsfälle sind meiner Meinung nach ziemlich unterschiedlich.

Warum sollte ich die Verwendung von trunc vor der Konvertierung ablehnen? Wahrscheinlich Präferenz, für mich ist die Art der Verschleierung tatsächlich in solchen Anwendungsfällen.

    
luk32 08.01.2014 10:01
quelle

Tags und Links