以下是带注释的相关问题代码
// 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,但这只是一个猜测。
答案 0 :(得分:1)
你的代码在一个未显示的地方的其他地方做了坏事。
在C ++中,当你犯了一个错误时,不能保证会立即弹出错误,并且可能发生(并且经常发生)的是代码显然仍在继续工作,但在另一个地方,代码是正确的,行为似乎很疯狂。
while
有效并且您应该尽快将其刻入您的大脑中,否则您将无法在编程方面取得任何进展。
除此之外...编译器工作,库工作,然后OS工作,RAM是可以的。该错误就在您的代码中。这是唯一允许进步的心态。
有时,极少数情况下,您可以在编译器或广泛使用的库中找到错误,但如果您能够找到正确的内容,您有权在别人的代码仅中声明错误错误是,你可以产生一个错误明显发生的例子。
好书“The Pragmatic Programmer”有一章关于这种危险的心态,可以真正破坏你前进的可能性......并标题为“select
没有被打破”。