0
#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main()
{
    string blah("512+4*+3−");
    stack<int> astack;
    int a=0;
    int b=0;
    int result=0;
    int final=0;
    for (string::iterator count=blah.begin(); count != blah.end(); count=count+1)
    {
        if (isdigit(*count))
        {
            astack.push(*count);
            cout<<" "<<*count<<" ";
        }   
        else
        {
            a=astack.top();
            astack.pop();
            b=astack.top();
            astack.pop();
            if(*count=='+')
            {
                result = a+ b;
            }
            else if (*count=='-')
            {
                result=a-b;
            }
            else if(*count=='*')
            {
                result=a*b;
            }   
            astack.push(result);    
        }
    }       
    final=astack.top();
    cout<<final;
}

私の問題は、実行するたびに、コードがセグメント障害のように見えることです。オペレーターがコメントした状態で実行しようとすると、スタックが 2 つの値をポップするように見え、その理由がよくわかりません

4

2 に答える 2