0

这是带有注释的相关问题代码

     // 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,但这只是一个猜测。

4

1 回答 1

1

您的代码在未显示的其他地方做坏事。

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

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

不仅如此......编译器工作,库工作,然后操作系统工作,RAM 没问题。该错误仅在您的代码中。这是唯一允许进步的心态。

有时,极少情况下,您可以在编译器或广泛使用的库中找到错误,但只有在您能准确找到错误所在并且可以生成示例的情况下,您才有权在其他人的代码中声明错误错误显然发生了。

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

于 2013-09-21T12:43:28.380 回答