我的代碼中存在導致運行時錯誤的問題。調試我在一些cout語句中拋出的代碼,以查找代碼正確執行的最後一個位置。根據輸出,當while條件評估爲false時,它看起來像while語句中斷,但我看不到這是可能的。下面的代碼:C++雖然循環不會在假狀態下退出
VAR聲明:
queue<string> newOrder;
stack< vector<char> > opStack;
char symbol;
的東西恰巧填充棧和隊列,然後達到這個代碼:
while(opStack.empty()==false){
if(opStack.top()[1] != 'L'){
cout<<"is stack empty?:"<<opStack.empty()<<endl;
symbol = opStack.top()[0];
newOrder.push(symbol);
opStack.pop();
cout<<"popped stack;"<<endl;
cout<<"is stack empty?:"<<opStack.empty()<<endl;
}
else{
break;
}
}
cout<<"made it out of while loop";
if(opStack.top()[1] == 'L'){
opStack.pop();
}
else{
errorEncountered = true;
}
這是輸出:
is stack empty?:0
popped stack;
is stack empty?:1
RUN FAILED (exit value 1, total time: 1s)
所以,根據輸出,堆棧在循環結束時是空的。這應該使while循環條件爲false,但程序在while循環退出之前失敗。這怎麼可能?這與堆疊的工作方式有關嗎?
@casperOne嘿,請不要冒犯,但我在這裏學習繩索,我不確定你爲什麼認爲我的問題「不真實」。這個問題在發佈之前我曾經追蹤過幾個小時,「爲什麼我的while循環在評估結果爲false時不會退出」,網絡上沒有人說:「再看一眼你如何調試;具體看一下在你如何產生你的輸出「這真的是我正在尋找的答案。 - 關於這個問題的「含糊,模糊,不完整,過於寬泛或修辭」是什麼,爲什麼它「目前的形式不能合理地回答」? – Wadsworth