Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图研究时消失的Bug 这是我在C++编程时遇到的最奇怪的事情。_C++_Debugging - Fatal编程技术网

试图研究时消失的Bug 这是我在C++编程时遇到的最奇怪的事情。

试图研究时消失的Bug 这是我在C++编程时遇到的最奇怪的事情。,c++,debugging,C++,Debugging,这是我的主文件: #include <iostream> #include "lib/utils.h" using namespace std; int main(int argc, const char *argv[]) { cout << bin2dec(101000010); return 0; } 很简单,您的问题对我来说是堆栈或堆崩溃——可能是堆栈,因为函数的所有操作都在堆栈上。如果不在程序的其他地方调用一些令人讨厌的未定义行为,就无法解决

这是我的主文件:

#include <iostream>
#include "lib/utils.h"

using namespace std;

int main(int argc, const char *argv[]) {
    cout << bin2dec(101000010);
    return 0;
}

很简单,您的问题对我来说是堆栈或堆崩溃——可能是堆栈,因为函数的所有操作都在堆栈上。如果不在程序的其他地方调用一些令人讨厌的未定义行为,就无法解决此类问题

编辑:哦,是的,你可以先初始化
dec
,举个例子

int dec;

创建
dec
但从不为其提供初始值(如0)。然后向其添加值,最终得到一个随机结果。

您没有初始化dec

int dec = 0;

您需要在函数中将
dec
初始化为零:

int dec = 0;

通过不初始化它,它从内存中变量位置的任意随机crud开始。调用
cout这个小错误是您没有初始化
dec
变量

更大的错误是,在编译时,您不习惯添加
-Wall
-O2
(当您编写的程序变得更加复杂时,这会导致很多痛苦)


-Wall
启用所有警告,
-O2
需要优化(优化包括代码路径分析,该分析会对未初始化的变量发出警告)。

这非常常见-欢迎来到未定义行为的世界。@Doug也许你可以向我解释问题是什么?至少,你应该明确地初始化dec。这可能是不确定性原理的一种表现吗?@Benjamin:因此有了“海森堡”这个词。你一看到它就动,快来。始终使用-墙。有时候,墙是不够的。使用-Wall和优化进行编译会发现未初始化的变量。@David Hammen:是的。。。请求优化对于查看更多警告非常重要。编辑了我的回复。Wall未启用所有警告。有相当多的警告-沃尔没有抓住。我使用-Wall-Wold样式cast-Woverloaded virtual-Wshadow。如果不是因为GNU对标准库的实现产生了大量噪音,我会将-Weffc++添加到组合中。获得更多警告的优化请求仅适用于g++,即使在
-O0
..@Gerado,clang也会警告未初始化的变量。你不应该:P错误越奇怪,越“愚蠢”你犯了一个错误:P我们都去过那里,我们都会再次去那里
int dec = 0;
int dec = 0;