如果在满足条件的情况下执行语句

时间:2015-04-04 22:20:04

标签: c++ if-statement

好的,这对我来说有点奇怪。我在我的程序中有这部分代码,它使用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,所以它与我在声明中使用的不一样。在修改之后声明是在修改i之前,这些值是应该匹配的,抱歉浪费时间。

1 个答案:

答案 0 :(得分:1)

在比较和打印之间重新分配到i当然可以使表达式memory.memory[i].uid具有不同的值。如果您想查看比较中使用的值,请确保在重新分配到i之前将其捕获