程序崩溃-除以0

Program crashes - divide by 0

本文关键字:除以 崩溃 程序      更新时间:2023-10-16

我有一个关于在不同电脑上运行一个程序的问题。

我用c++ windows 7 64位visual studio写了一个程序,在我的电脑上运行得很好。

当我试图在另一台计算机(windows 7 64位visual studio)上运行它时,程序崩溃了-它说我除以0某个变量。

这是代码的一小部分:

unsigned int var2;
double var1 ;
void main()
{
 // some code ...
 var1 = 1.0;
 // some more code ...
 var1 /= 2;
 ...  
 var2 /= var1;
}

就在最后一行之后,程序崩溃了…

我知道这两个变量来自不同的类型,但我很乐意知道为什么代码在一台机器上运行完美而在另一台机器上崩溃,以及我如何防止这种情况。

edit:我得到这个警告-

C4244: '/=':从'double'转换为'u_int',可能丢失数据

谢谢!

C4244: '/=':从'double'转换为'u_int',可能丢失的数据

这可能指的是程序的最后一行,在这里您尝试用双精度数除整型数。此时的双精度对象保存值0.5,当转换为int型时,该值将被四舍五入(或者更确切地说是被截断)为0。这将导致除零。

根据我对范数中'通常的算术转换'的理解,表达式应首先将var1转换为double,对双精度值(即非零值)进行算术运算,然后将结果转换为ìnt '。所以警告不能解释除以0的异常。

我认为错误来自代码的一部分没有显示在你的快照,可能包含一个未定义的行为(经常有相同的代码,有时工作,有时崩溃)。