C ++:这个while循环有什么问题?

时间:2013-09-21 11:40:00

标签: c++

以下是带注释的相关问题代码

     // right now hack=1 & i=4(both integers)
while(hack<i)  //loop begins
    {
        hack++;
        Linklist<node*> z=advancer(l); 
      //Linklist is my own class, node is my own object type
      //l(type same as z) is predefined before the loop, and advancer is a function.
      //Interestingly, l=advancer(l) doesnt work directly so i introduce z 
      //which i do not understand why.
        l=z;
        cout<<"print" //just to confirm code reaches here, Yes it does
    }
//while loop doesnt execute again,checked by a cout statement in beginning.

因此,如果while循环到达最后一行,为什么不再执行? C ++有时会让我感到惊讶,但这是我见过的最神奇的东西,而且我一无所知,因为这是如此基本的代码,似乎没有任何范围内的错误。请帮忙。各种可能的错误来源将不胜感激。

我的实际程序太大(1000行),所以我不打扰给出其他功能的背景,因为我认为它不相关。我想详细说明,如果有人在这里做事可能是一个原因而且愿意倾听:)

我可以想出的一个可能的事情是可能正在计算函数,所以它在此期间执行了cout,但这只是一个猜测。

1 个答案:

答案 0 :(得分:1)

你的代码在一个未显示的地方的其他地方做了坏事。

在C ++中,当你犯了一个错误时,不能保证会立即弹出错误,并且可能发生(并且经常发生)的是代码显然仍在继续工作,但在另一个地方,代码是正确的,行为似乎很疯狂。

while有效并且您应该尽快将其刻入您的大脑中,否则您将无法在编程方面取得任何进展。

除此之外...编译器工作,库工作,然后OS工作,RAM是可以的。该错误就在您的代码中。这是唯一允许进步的心态。

有时,极少数情况下,您可以在编译器或广泛使用的库中找到错误,但如果您能够找到正确的内容,您有权在别人的代码中声明错误错误是,你可以产生一个错误明显发生的例子。

好书“The Pragmatic Programmer”有一章关于这种危险的心态,可以真正破坏你前进的可能性......并标题为“select没有被打破”。