运行时错误 - 除以零

时间:2012-03-04 01:57:03

标签: c++

我调试脚本时遇到了运行时问题。

它说:

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语句,我一直在思考像PHP程序员那样v.frustrating以适应!

3 个答案:

答案 0 :(得分:5)

您在第30行重新声明miss。该变量将是 if 语句的本地变量。 因此,全局miss的值仍为零。取出所有int以及bool语句中的if !像这样:

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

答案 1 :(得分:1)

第29行和第32行应

miss = 5

miss = 2

您在if范围内声明了一个新的局部变量miss,这意味着您没有更改在第6行声明的那个

答案 2 :(得分:0)

%(模数)是除法的余数。所以你用%b除以b并从中得到残余。如果b为0(如本例所示),则会出现错误 除以0是非法的,会引起宇宙干扰(或代码崩溃) 尝试将变量设置为另一个值。