#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();
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) 回帖