竞赛讨论区 > 第三题关于寻找数的
头像
巧手妙工
发布于 2020-12-01 21:08
+ 关注

第三题关于寻找数的

#define ll long long
if(str[i] != '+' && str[i] != '-' && str[i] != '*') {
                ll x = 0;
                while(str[i] != '#') {
                    x = x*10 + str[i]-'0';
                    i++;
                }
                s.push(x);
            }
为什么说会发生段错误啊,求大佬解释这里有什么错误

完整代码是这样的
#define ll long long
        stack<ll> s;
        ll sum = 0;
        for(int i = 0; i < str.size(); i++) {
            if(str[i] != '+' && str[i] != '-' && str[i] != '*') {
                ll x = 0;
                while(str[i] != '#') {
                    x = x*10 + str[i]-'0';
                    i++;
                }
                s.push(x);
            }
            else {
                if(str[i] == '+') {
                    ll a = s.top();
                    s.pop();
                    ll b = s.top();
                    s.pop();
                    s.push(a+b);
                }
                if(str[i] == '-') {
                    ll b = s.top();
                    s.pop();
                    ll a = s.top();
                    s.pop();
                    s.push(a-b);
                }
                if(str[i] == '*') {
                    ll a = s.top();
                    s.pop();
                    ll b = s.top();
                    s.pop();
                    s.push(a*b);
                }
            }
        }
        return s.top();

全部评论

(2) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐