2012-03-04 70 views
0

我有一個運行時問題,當我調試我的腳本。運行時錯誤 - 除零

它說:

Unhandled exception at 0x002a4f8e in test2.exe: 0xC0000094: Integer division by zero. 

雖然有問題的線是蘭特數生成。

if((rand() % miss) < 3){ //line 40 
    int phit = (rand()% hit); 
} else { 
    bool pmiss = true; 
} 

調試器在第40行停止時出現錯誤(我在上面標記)。

我完整的腳本是在這裏: http://www.paste.to/MzQ1ODM1

我應該如何寫的if語句,如果這會導致這樣的錯誤,我一直在想喜歡它v.frustrating適應一個PHP程序員!

+6

聲明問題幾乎可以肯定,'miss'等於零。 – 2012-03-04 01:58:16

+0

「miss」的價值是什麼? – 2012-03-04 01:58:34

+0

@OliCharlesworth我附上了一個鏈接到我的完整腳本。我在if語句中得到一個值...但是我全局設置變量=/ 值缺失爲5或至少應該是。 – Sir 2012-03-04 01:59:02

回答

5

您在第30行重申聲明miss。如果聲明爲,那麼該變量將在的本地。 因此,全球miss仍將具有零值。拿出所有那些int,還有bool裏面的if聲明!就像這樣:

      if(user_weapon == 'k'){ 
            miss = 5; 
            hit = 5; 
          } else if(user_weapon == 'b'){ 
            miss = 2; 
            hit = 3; 
          } else { 
            invalid = true; 
          } 
+0

啊是的,沒有注意到。 +1。否則,首先不要從0開始是個好主意。 – 2012-03-04 02:04:56

+1

另外'無效'前面的'布爾'必須去。 – celtschk 2012-03-04 02:05:40

+0

啊,以便解釋它!天哪,它確實是一個相當scrict語言= /猜猜現在學習PHP很糟糕=/ – Sir 2012-03-04 02:06:02

0

%(模數)是除法的餘數。所以你把a除以b得到餘數。如果b是0(就像這種情況),你會得到一個錯誤。
0除法是非法的,會導致宇宙干擾(或代碼崩潰)。
嘗試將變量設置爲其他值。

+0

我附上我的完整腳本 - 變量設置的時刻之前,這就是爲什麼我不明白它沒有設置的原因... – Sir 2012-03-04 02:02:56

+0

if語句可能是越野車,嘗試在開始時將其設置爲9999999並告訴我如果修復它(暫時) – 2012-03-04 02:03:23

1

線29和32應該是

miss = 5 

miss = 2 

您聲明裏面一個新的局部變量小姐,如果範圍,這意味着你不能改變一個第6行

+0

相反,那些局部變量與if一起死亡,但它們不會更改第6行上的var。因此第6行上的var保持爲0,並且這兩個死亡。解決方案是一樣的 – 2012-03-04 02:06:18