Double Array



  • Hallo,

    warum wird hier 0 ausgegeben:

    double a[] = {1/8, 1/4, 1/2, 1};
    cout << a[0];
    

    Kann ich ein double Array nicht mit double-Werten initialisieren?



  • C++ rechnet hier mit Integern. Du musst 1.0/8.0 schreiben!

    LG, freakC++



  • freakC++ schrieb:

    Du musst 1.0/8.0 schreiben!

    Es reicht, wenn ein Operand den Typ double hat.
    int/int -> Integerdivision
    double/int -> funzt
    int/double -> funzt
    double/double -> funzt

    Am kürzesten ist 1/8.



  • doublenull schrieb:

    Hallo,

    warum wird hier 0 ausgegeben:

    double a[] = {1/8, 1/4, 1/2, 1};
    cout << a[0];
    

    Kann ich ein double Array nicht mit double-Werten initialisieren?

    Doch, aber das tust du hier nicht. Du dividierst hier (wiederholt) zwei Literale vom Typ int.
    Und jetzt rate mal was laut Standard der Fall ist.

    For integral operands the / operator yields the algebraic quotient with any fractional part discarded;

    Setz' einfach nen Punkt nach einem der Zahlen in jedem Bruch, dadurch wird das eine Literal ein Fließkomma-Literal (genauer: vom Typ double ), damit wird das andere ebenfalls zu einer Fließkommazahl konvertiert und es funktioniert.

    double a[] = {1/8., 1/4., 1/2., 1};
    

Anmelden zum Antworten