哪一部分会导致浮点异常?

时间:2012-10-22 18:35:48

标签: c exception floating-point-exceptions

如果人们可以查看这段代码并让我知道可能导致浮点异常的原因,我将不胜感激。

信息:

  • branches是一个int数组大小200
  • line是char数组大小为20
  • 循环运行6次,然后发生异常。

我很困惑,因为没有可能导致此问题的除法,浮点数或整数。

    for (count = 0; count < sizeof(branches); count++){

    if (fgets(line,sizeof(line),fp)==NULL)
     break;
    else {

    int branch_taken = line[16] - 48; 

    branches[count] = branch_taken;
     }   
    }

1 个答案:

答案 0 :(得分:7)

sizeof(branches)字节的大小 - 你需要使用一个表示元素的数量的常量,即200,否则你将超出界限您的branches数组,这将导致未定义的行为。

您的代码可能看起来像这样:

#define NUM_BRANCHES 200

int branches[NUM_BRANCHES];

for (count = 0; count < NUM_BRANCHES; count++)
{
    ...