我正在尝试在我的C程序中使用sinf
函数,但它在MSVC 6.0下给出了一个未定义的引用错误,但sin
工作正常。
这让我很想知道sin
和sinf
之间的区别。
sin
和sinf
之间的逻辑区别是什么?
如何实现自己的sinf
功能?
答案 0 :(得分:7)
sin
取一个double并返回一个double - sinf
取一个float并返回一个float。
换句话说,sin
是双精度,sinf
是单精度。
如果您使用的是没有sinf的旧编译器,则可以将其实现为:
#define sinf(x) (float)sin((double)(x))
答案 1 :(得分:3)
sin取一个double并返回一个double,由ANSI C定义.sinf不是。
答案 2 :(得分:2)
sinf()
被添加到C99中的C中,Microsoft Visual C ++并不完全支持(即便如此,Visual C ++ 6在C99标准化之前发布)。
您可以使用sin()
功能,该功能需要double
(sinf()
需要float
)。