一个非常奇怪的案例刚刚发生在我身上——在使用调试器时,它向我显示某个布尔变量的值为true
,但是当我打印它(或对其进行任何其他操作)时,它的行为为0
(即 false)。
我能做些什么来修复这个错误?恐怕这是环境错误,因此发布代码示例将毫无意义。(一个隐藏的、烦人的内存管理错误不可能是原因,对吧?),在这种情况下,我想指出,我会惊讶地发现我的环境没有配置好(我在这个项目上工作环境一年多)。
到目前为止我:
- 仔细检查编译器在我的项目属性中没有对代码进行任何优化。
- 试图重新打开视觉工作室并清理并重新构建项目
- 在网上搜索解决方案(没有找到任何解决方案)。我使用 Visual Studio 2010,我的编程语言是 C++
关于代码共享请求:
很抱歉,我无法发布代码(我的老板不会很高兴看到它在网络上运行)......如果你能就问题的可能原因给出一些想法,那就太好了,我会自己在代码中寻找线索,检查这些原因是否真的导致了问题。然而,为了清楚起见,这里有几行代码让我很苦恼:
bool dir = getNode(location)->getNext()->getDirection(); //dir is displayed as "true" in the debbuger
int toPush = (dir == 1) ? 1 : 0; //"toPush" is displayed as "0" in the debbugger
cout<<dir<<endl; //both output 0.
cout<<(dir == true)<<endl;
根据您的要求,我附上屏幕截图。注意屏幕右下角的“dir”值是“true”,右边的程序输出以 0 结尾(对应于“cout<< dir”命令)。