好的,所以,这对我来说有点奇怪。我在我的程序中有这部分代码,它使用if语句来检查并查看是否在内存中找到了一个页面,这两个都是结构体。不过,我对输出应该是什么以及输出是否完成有所了解,因此我开始检查某些区域,看看它可能来自哪里,并在这样做的过程中遇到了这个问题。这里在这个地方:如果陈述正在执行,尽管条件不符合
if(memory.memory[i].uid==position)
{
i=pages;
found=1; //The page was found in main memory
cout << memory.memory[i].uid << " " << position << endl;
}
该cout有用于测试的目的,是我如何发现这个问题。 memory.memory [i] .uid总是等于0,但是if语句中的代码仍然运行(所以我得到巨大的“0 ##”块,##因为位置变量而增加) 。
是否有任何可能的原因会发生?对我来说,尽管声明是错误的,声明中的代码仍在执行,这是没有意义的。语句中的两个变量都是整数。 (我不确定需要多少代码,它是一个跨越3个文件的大程序,所以如果我可以避免的话,我不想包含所有的代码。如果我需要更多的代码,可以编辑更多。)
编辑:哇,我是盲人。我刚刚意识到我正在修改我之前的声明,所以它是不一样的我在声明中使用。在修正它之后,声明是在修改i之前的值是匹配的,因为它们应该是,对于浪费时间抱歉。
你说得对,我在发布问题后才注意到它。哈,我应该多加注意。 – 2015-04-04 22:24:42
@JimmyDoyle Heh。这与[橡皮鸭调试](http://en.wikipedia.org/wiki/Rubber_duck_debugging)的原理相同:只是试图解释问题可以为您提供以前错过的新见解。在这种情况下,在发布问题后不久,在下次发布之前,您似乎已经走上了正确的轨道。 :) – hvd 2015-04-04 22:27:55