2010-05-15 9 views
7

Ich versuche, die sinf Funktion in meinem C-Programm zu verwenden, aber es gibt mir einen nicht definierten Referenzfehler unter MSVC 6.0, aber sin funktioniert gut.sin v/s sinf Funktion in C

Dies macht mich neugierig, den Unterschied zwischen sin und sinf zu finden.

Was ist der logische Unterschied zwischen sin und sinf?

Wie kann ich meine eigene sinf Funktionalität implementieren?

+0

Die Verwendung einer Float-Funktion zur Berechnung des Sinus ist ein sinf. –

Antwort

7

sin nimmt ein Doppel und gibt ein Doppel zurück - sinf nimmt einen Float und gibt einen Float zurück.

Mit anderen Worten: sin ist doppelte Präzision und sinf ist einzelne Präzision.

Wenn Sie einen alten Compiler verwenden, die nicht über sinf Sie es umsetzen können als:

#define sinf(x) (float)sin((double)(x))

3

Sünde eine doppelte nimmt und gibt ein Doppel- und durch ANSI C sinf isn definiert ist t.

+4

'sinf()' ist nicht Standard in C89. Es ist Standard in C99. –

2

sinf() wurde zu C in C99 hinzugefügt, was Microsoft Visual C++ nicht vollständig unterstützt (obwohl Visual C++ 6 veröffentlicht wurde, bevor C99 standardisiert wurde).

können Sie verwenden, um die sin()-Funktion, die eine double (sinf() nimmt einen float) hat.