Der Martin: (C) Überschüssiges Leerzeichen

Beitrag lesen

Hi,

mir fällt da gerade vom mathematischen Aspekt her noch ein Fauxpas auf:

*   - die Länge der Raumdiagonale (=a*sqrt(3))

Die Raumdiagonale ist also in aller Regel nicht ganzzahlig, es sei denn, die Kantenlänge wäre ein Vielfaches von 1/√3.

typedef struct {
    char *type;
    int value;
  } calc;

c[2].type = "Länge der Raumdiagonale";
  c[2].value = a * sqrt(3);

Hier gehen aber die Nachkommastellen der berechneten Raumdiagonalen verloren. Die Multiplikation mit float a ist noch okay, aber die Zuweisung an int x.value erzwingt einen impliziten Typecast float->int.

Hast du das bewusst in Kauf genommen? Oder einfach übersehen?
So long,
 Martin

--
Wenn man keine Ahnung hat - einfach mal Fresse halten.
  (Dieter Nuhr, deutscher Kabarettist)