【问题标题】:Why am I getting a floating point exception error?为什么会出现浮点异常错误?
【发布时间】:2012-10-14 09:34:06
【问题描述】:

我是一个新手程序员,所以请与我打交道。我正在编写一个程序来分析数据。当我执行程序时,我收到一个“浮点异常”,我不知道为什么。这是错误源自的代码部分。据我所知,if 声明似乎是问题所在,但我不明白为什么。非常感谢您提供的任何帮助!

double tArray[600][49];

void main() {
  double finalArray[600][0]
  double n = 0;
  int h = 0;
  try {
    for (int i = 0; i < 600; j++) {
      for (int j = 1; j < 16; j++) {
        h++;
        n = tArray[i][j * 3 - 1] - tArray[i][j * 3 - 2];
        double t = -30;
        if (n < t) {
          finalArray[i][0] = tArray[h][3 * j] - tArray[h + t][3 * j];
          h++;
        }
      }
    }
  }
}

【问题讨论】:

  • finalArray[i][0] 确实越界了。
  • 您在内部循环中递增 'h',然后将其用作 tArray 中的第一个索引 - 它会很快超过 600。
  • 我们可以假设double finalArray[600][0] 中缺少的分号只是一个错字,对吧?
  • for(int i = 0; i &lt; 600; j++) 循环中的j++ 是错字吗? try 块有什么用?这不是你的真实代码是吗?真是一团糟。
  • 扔掉任何告诉你使用void main()的书。这是int main()

标签: c++ arrays floating-point-exceptions


【解决方案1】:

尝试将 finalArray 声明为:

double finalArray[600][1];

原来的声明似乎没有为元素分配任何空间。

如果不尝试像这样只分配一维数组:

double finalArray[600];

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    声明double finalArray[600][0] 表示数组是600 个元素乘0 个元素。我认为您希望第二维为 1。请记住,您需要声明行数和列数,但索引从 0 开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      相关资源
      最近更新 更多