2012-10-22 69 views
0

如果人們可以查看這段代碼並讓我知道浮點異常可能的原因,我將不勝感激。這是什麼部分會導致浮點異常?

信息:

  • 分支是一個int數組大小200
  • 線是一個字符數組大小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; 
    } 
    } 
+0

那一行是拋出的異常?難道這個循環已經退出並且其他地方拋出異常了嗎? – eggyal

回答

7

sizeof(branches)字節大小 - 你需要使用一個常數,表示元件即200的數量,否則就會被超出您branches數組的範圍,這將導致未定義的行爲。

你的代碼也許應該是這個樣子:

#define NUM_BRANCHES 200 

int branches[NUM_BRANCHES]; 

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

是的,但這並不能解釋浮點異常。 –

+1

@Nick:ITYM'sizeof(branches)/ sizeof(branches [0])'? –

+0

非常感謝你;將永遠不會意識到這一點。 – franka

相關問題