Announcement

Collapse
No announcement yet.

Wann sollten Literale verwendet werden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wann sollten Literale verwendet werden

    Hallo,

    ich hätte eine Frage zur Verwendung von Literalen. Für die Datentypen float, double und long gibt es ja die Zusätze F, D, und L, also beispielsweise:

    Code:
    float value = 10.5F;
    Mir ist allerdings nicht ganz klar, an welchen Stellen ich diese zwingend verwenden muss bzw. was hier ein guter Programmierstil ist.

    Außerdem habe ich schon Programmcodes gefunden, in denen eine Gleitkommazahl stets mit der Null als erste Nachkommastelle definiert wird, also:

    Code:
    double value = 1.0;
    Wieso ist das erforderlich?

    Vielen Dank schonmal und viele Grüße

  • #2
    Das sollte dann gemacht werden, wenn ich möchte, dass die Rechoperation als Gleitkommaoperation durchgeführt wird.
    Christian

    Comment


    • #3
      Wieso ist das erforderlich?
      In deinen Beispielen ist es das nicht. Da der Typ ja direkt aus der Variablendefinition ermittelt werden kann.
      Problematischer wäre z.B.
      Code:
      float oneThird = 1/3; // das ist natürlich falscher Code
      Das sind 2 Literale deren Typ man sich genauer überlegen muss weil sie unabhängig von der Variablendefinition sind

      Ob man 1.0 oder 1d benutzt ist Geschmackssache. Die meisten halten die Angabe einer Dezimalstelle für lesbarer. Eine technische Begründung hat das aber nicht. Bei float solle man den f Suffix verwenden bzw m bei decimal da bei reelen Literalen double der default ist.

      Genauso bei long. Das L würde man verwenden wenn der Typ ansonsten nicht ableitbar ist man als Programmierer aber weiß ich benötige die Konstante in einem Context wo es wichtig ist das es ein long ist. Zum Beispiel weil ich die in einer Multiplikation verwende wo das Ergebnis einen Int übersteigen könnte. Wenn ich den Konstanten keinen Long Suffix verpasse sind die defaultmäßig erstmal ints und eine Multiplikation damit wäre erstmal eine Integermultiplikation mit einem Integerergebnis und kein long. Folgendes ginge also nicht.
      Code:
      long toBig = 1000000 * 1000000;
      Die rechte Seite würde einen Überlauf generieren da beide Literale erstmal Ints sind und damit auch erstmal eine Integermultiplikation stattfindet. Erst danach(somit zu spät) würde der cast auf long stattfinden. Mindestens einem der Literale müßte man also ein L verpassen.

      Comment


      • #4
        Ich hab das auch sehr lange nicht gewusst und das auf die harte Tour gelernt... Das 1/3 nicht das gewünschte Ergebnis in dieser Form liefert...
        Kann einen viele Stunden kosten wenn man sowas nicht weiß , aber schön erklärt.

        Comment

        Working...
        X