2012-03-04 118 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