我调试脚本时遇到了运行时问题。
它说:
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以适应!
答案 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)
miss = 5
miss = 2
您在if范围内声明了一个新的局部变量miss,这意味着您没有更改在第6行声明的那个
答案 2 :(得分:0)
%(模数)是除法的余数。所以你用%b除以b并从中得到残余。如果b为0(如本例所示),则会出现错误 除以0是非法的,会引起宇宙干扰(或代码崩溃) 尝试将变量设置为另一个值。