运行时错误-除以零

Run time error - division by zero

本文关键字:运行时错误      更新时间:2023-10-16

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

上面写着:

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程序员一样思考,这很难适应!

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

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

第29行和第32行应为

miss = 5
miss = 2

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

%(模数)是除法的余数。所以你在%b中用a除以b,然后得到余数。如果b是0(就像本例中一样),你会得到一个错误
除以0是非法的,会导致宇宙扰动(或代码崩溃)
尝试将变量设置为另一个值。