我有一些问题的样本代码,我从布朗格和拉扎里尼的'音频编程书'。它应该为正弦波生成值,但是当我运行它时,我得到的值只是-0.0000000和0.0000000,而不是-1.0和+1.0之间的期望值。我观察过使用断点运行时的值,它看起来都很好,但是当它运行时(无论是在调试模式还是发布模式下),它都会给我错误的值。
我在MacOSX 10.6.8上使用Xcode 3.2.6。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#ifndef M_PI
#define M_PI (3.141592654)
#endif
int main(int argc, char** argv) {
int i, nsamps;
double samp;
double twopi = 2.0 * M_PI;
double angleincr;
nsamps = 50;
angleincr = twopi * nsamps;
for (i=0; i < nsamps; i++) {
samp = sin(angleincr*i);
fprintf(stdout, "%lf\n", samp);
}
fprintf(stderr, "done\n");
return 0;
}
谢谢!:)
最佳答案
samp = sin(angleincr*i);
在你的代码中,
angleincr*i
总是2π的倍数,所以结果确实是0。