程序崩溃-除以0
Program crashes - divide by 0
我有一个关于在不同电脑上运行一个程序的问题。
我用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的异常。
我认为错误来自代码的一部分没有显示在你的快照,可能包含一个未定义的行为(经常有相同的代码,有时工作,有时崩溃)。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 处理除以零会导致<csignal>意外行为
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 为什么此代码中没有除以零编译时警告或运行时崩溃
- 程序崩溃-除以0