“......重新宣布为不同的符号”?

时间:2013-10-20 03:52:34

标签: c++ c for-loop syntax-error

#include <stdio.h>
#include <math.h>

double integrateF(double low, double high)
{
    double low = 0;
    double high = 20;
    double delta_x=0;
    double x, ans;
    double s = 1/2*exp((-x*x)/2);

    for(x=low;x<=high;x++)
        delta_x = x+delta_x;
    ans = delta_x*s;

    return ans;
}

它表示低和高被重新声明为不同类型的符号&#34;我不知道这意味着什么。基本上,我在这里所做的一切(READ:尝试)是从低(我设置为0)到高(20)的积分,以找到黎曼和。 for循环看起来也有点似乎......我迷失了。

编辑:

#include <stdio.h>
#include <math.h>

double integrateF(double low, double high)
{
    low = 0;
    high = 20;
    double delta_x=0;
    double ans = 0;
    double x;
    double s = 1/2*exp((-x*x)/2);

    for(x=low;x<=high;x++)
    {
        delta_x = x+delta_x;
        ans = ans+(delta_x*s);
    }
    return ans;
}

^在括号之后仍然无法奏效。它说&#34;未定义引用&#39; WinMain @ 16&#39;&#34; ...

7 个答案:

答案 0 :(得分:6)

你在函数内部重新定义低和高,与参数中定义的函数冲突。

for循环正在进行

for(x=low;x<=high;x++)
{
   delta_x = x+delta_x;
}
你是说要做什么

for(x=low;x<=high;x++)
{
   delta_x = x+delta_x;
   ans = delta_x*s;
}

但我认为你想做ans += delta_x*s;

答案 1 :(得分:1)

lowhigh已作为integrateF方法的参数传递。但是他们在方法中再次被重新宣布。因此错误。

答案 2 :(得分:1)

低和高已作为integF方法的参数传递,并在方法内再次重新声明..

当用于计算s ..

时,x未被赋值

double x,ans; double s = 1/2 * exp(( - x * x)/ 2);


答案 3 :(得分:0)

您可能想尝试这样: -

for(x=low;x<=high;x++)
{                          //Use brackets since you are redefining low and high inside the function
delta_x = x+delta_x;
ans = delta_x*s;
}

for(x=low;x<=high;x++)
{                          //Use brackets since you are redefining low and high inside the function
delta_x = x+delta_x;
}

修改: -

  

它说“未定义引用'WinMain @ 16'”

确保您已定义main() or WinMain()。还要检查main()是否未在命名空间内定义

答案 4 :(得分:0)

导致此错误的另一种方法是,在已将名称标签用作主要功能之外的变量的代码中“重新定义”您的函数-像这样(伪代码):

double integrateF = 0;

main(){
 // get vars to integrate ...
}

double integrateF(double, double){
  //do integration
}

您甚至不必在main内部调用函数来尝试编译时出现错误,相反,编译器无法理解: double integrateF = 0 = (double, double) { }; 在主要功能之外。

答案 5 :(得分:-1)

错误是因为您声明低和高两次 你的方法应该是这样的

double integrateF(double low, double high)

{
  low = 0; 
  high = 20;
  double delta_x=0;
  double x, ans;
  double s = 1/2*exp((-x*x)/2);

  for(x=low;x<=high;x++)
  {
   delta_x = x+delta_x;
   ans = delta_x*s;
  }
  return ans;

}

答案 6 :(得分:-1)

当你在参数中声明数据类型时,你不必重新声明它们。

而不是

double integrateF(double low, double high)
{
    double low = 0;
    double high = 20;
    .
    .
    .
}

你应该这样做

double integrateF(double low, double high)
{
    low = 0;
    high = 20;
    .
    .
    .
}