我正在尝试使用步骤1 / n计算pi从0到1-1 / n的值,但是c不会让我乘以2PI和我的步骤数组(错误,*的运算符必须是指针) 。我是新来的,所以如果有人能指出我正确的方向,这将是伟大的。这是我的代码。
#include <stdio.h>
#include <conio.h>
#include <inttypes.h>
#include <math.h>
#define PI
int main(){
int i;
double in[256], out[256],n;
n = 128.0000;
for (i = 0; i <= n-1; i++){
in[i] = i / n;
out[i] = sin(2*PI*in[i]);
printf("%lf %lf \n", in[i],out[i]);
}
_getch();
}
答案 0 :(得分:4)
#define PI
您没有为PI
定义任何值,请将其更改为
#define PI 3.14159265358979323846
或
#define PI M_PI
如果你在POSIX世界(math.h
也必须包括在内)。
在您的示例中,PI
只替换为任何内容和您的赋值语句:
out[i] = sin(2*PI*in[i]);
最终:
out[i] = sin(2**in[i]);
答案 1 :(得分:2)
您定义PI
,但未将其定义为 任何内容。因此,令牌PI
会被代码中的 nothing 替换。所以这一行:
out[i] = sin(2*PI*in[i]);
变为:
out[i] = sin(2**in[i]);
相当于:
out[i] = sin(2*(*in[i]));
这意味着“获取i
数组的第in
个元素,取消引用它,将结果乘以2,然后将其传递给sin()
。但是i
in
数组的第th个元素是double,而不是指针类型 - 这就是你得到这个特殊错误的原因,因为*
的操作数确实不是指针类型。
您需要为PI
定义添加值:
#define PI 3.1415926535897932384626433