Seite 1 von 1

Double gemoppelt?

Verfasst: Di Jul 20, 2010 12:16 am
von Xin
http://proggen.org/doku.php?id=theory:t ... =revisions

@nufan: Wieso klammerst Du double(x) zu (double)(x)?

Re: Double gemoppelt?

Verfasst: Di Jul 20, 2010 1:10 pm
von nufan
Xin hat geschrieben:@nufan: Wieso klammerst Du double(x) zu (double)(x)?
Ich habe nicht gewusst, dass man Casts auch ohne Klammern schreiben kann - und gcc stimmt mir zu :)

Hier ein Beispiel das im Prinzip das selbe macht wie jenes im Wiki:

Code: Alles auswählen

#include <stdio.h>

int main()
{

  int start = 10, end = 2, freq = 5;
  double result = double (start - end) / double (freq);   // Zeile 7
  
  printf ("%lf\n", result);

  return 0;

}
Produziert folgenden Fehler:
main.c:7: error: expected expression before ‘double’
Folgendes funktioniert wie es soll:

Code: Alles auswählen

double result = (double) (start - end) / (double) freq;

Re: Double gemoppelt?

Verfasst: Di Jul 20, 2010 2:01 pm
von Xin
nufan hat geschrieben:
Xin hat geschrieben:@nufan: Wieso klammerst Du double(x) zu (double)(x)?
Ich habe nicht gewusst, dass man Casts auch ohne Klammern schreiben kann - und gcc stimmt mir zu :)
Frag mal g++ ^^
nufan hat geschrieben:Produziert folgenden Fehler:
main.c:7: error: expected expression before ‘double’
Folgendes funktioniert wie es soll:

Code: Alles auswählen

double result = (double) (start - end) / (double) freq;
Ich habe es nicht mehr geändert, weil double(x) ein C++-Cast ist (Konstruktor von double wird gerufen), und (double)x ein old-fashioned-c-style-cast, also pöse - aber dafür funktioniert er halt auch unter C... was unbestritten auch ein Vorteil sein kann.