런타임 오류가 발생하는 문제가 발생했습니다. 코드를 디버깅하기 위해 일부 cout 문에서 코드가 제대로 실행되는 마지막 위치를 찾기 위해 throw했습니다. 출력을 기반으로 while 문이 while 조건이 false로 평가 될 때 중단되는 것처럼 보이지만 가능한 방법을 볼 수 없습니다.C++ while 루프가 거짓 조건에서 종료되지 않음
VAR 선언 : 여기에 코드입니다
queue<string> newOrder;
stack< vector<char> > opStack;
char symbol;
물건 즉 스택과 큐를 채우는 일이,이 코드는 도달 :
is stack empty?:0
popped stack;
is stack empty?:1
RUN FAILED (exit value 1, total time: 1s)
:이 출력입니다
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;
}
따라서 출력에 따라 스택은 루프 끝에서 비어 있습니다. while 루프 조건을 false로 설정해야하지만 while 루프가 종료되기 전에 프로그램이 실패합니다. 그게 어떻게 가능할까요? 스택이 작동하는 방식과 관련이 있습니까?
@casperOne 안녕하십시오 : cout을 내 원래하지만 제대로 형식의 질문에 플러시 점점되지 않았 음을 지적 @interjay하는
감사 (
if(opStack.empty()==false){//second if-else set}
내부 지난 경우-else 문을 넣어 그것을 해결) 기분을 상하게하지 마라. 그러나 나는 여기의 로프를 배우고있다. 그리고 나는 당신이 나의 질문을 "진짜가 아니다라고 생각하는 이유를 명확히하지 않는다." 내가 게시하기 전에 몇 시간 동안 사냥했다는 질문은 "왜 while 루프가 false로 평가 될 때 루프가 종료되지 않습니까?"라고 말한 웹에는 아무도 없었습니다. "디버깅하는 방법을 한눈에 살펴보고, 특히 당신이 당신의 산출물을 어떻게 만들어 내고 있는지 "정말 내가 찾고있는 대답이었습니다. - 그것에 대해 "모호하고, 모호하고, 불완전하며, 광범위하거나, 수사적 인"것이 무엇이며, 왜 "현재의 형태로 합리적으로 대답 할 수 없습니까?" – Wadsworth